Diff to HTML by rtfpessoa

Files changed (64) hide show
  1. runtime/doc/autocmd.txt +26 -23
  2. runtime/doc/builtin.txt +331 -312
  3. runtime/doc/change.txt +32 -32
  4. runtime/doc/channel.txt +34 -30
  5. runtime/doc/cmdline.txt +15 -12
  6. runtime/doc/debug.txt +17 -17
  7. runtime/doc/debugger.txt +4 -4
  8. runtime/doc/diff.txt +7 -6
  9. runtime/doc/digraph.txt +2 -2
  10. runtime/doc/editing.txt +27 -27
  11. runtime/doc/eval.txt +54 -52
  12. runtime/doc/filetype.txt +21 -18
  13. runtime/doc/gui.txt +10 -10
  14. runtime/doc/gui_x11.txt +2 -2
  15. runtime/doc/helphelp.txt +6 -6
  16. runtime/doc/if_cscop.txt +2 -2
  17. runtime/doc/if_lua.txt +51 -50
  18. runtime/doc/if_mzsch.txt +24 -23
  19. runtime/doc/if_perl.txt +9 -9
  20. runtime/doc/if_pyth.txt +38 -35
  21. runtime/doc/if_ruby.txt +13 -13
  22. runtime/doc/if_tcl.txt +9 -8
  23. runtime/doc/indent.txt +38 -37
  24. runtime/doc/insert.txt +44 -41
  25. runtime/doc/intro.txt +7 -5
  26. runtime/doc/map.txt +30 -30
  27. runtime/doc/mbyte.txt +6 -6
  28. runtime/doc/message.txt +1 -1
  29. runtime/doc/mlang.txt +2 -2
  30. runtime/doc/motion.txt +25 -24
  31. runtime/doc/netbeans.txt +19 -19
  32. runtime/doc/options.txt +31 -29
  33. runtime/doc/os_amiga.txt +3 -3
  34. runtime/doc/os_haiku.txt +11 -11
  35. runtime/doc/os_mac.txt +2 -2
  36. runtime/doc/os_mint.txt +2 -2
  37. runtime/doc/os_qnx.txt +3 -3
  38. runtime/doc/os_vms.txt +34 -26
  39. runtime/doc/os_win32.txt +6 -6
  40. runtime/doc/pattern.txt +10 -9
  41. runtime/doc/popup.txt +13 -13
  42. runtime/doc/print.txt +5 -4
  43. runtime/doc/quickfix.txt +87 -84
  44. runtime/doc/recover.txt +2 -2
  45. runtime/doc/repeat.txt +47 -45
  46. runtime/doc/sign.txt +53 -52
  47. runtime/doc/spell.txt +11 -10
  48. runtime/doc/sponsor.txt +2 -2
  49. runtime/doc/starting.txt +15 -15
  50. runtime/doc/syntax.txt +161 -156
  51. runtime/doc/tabpage.txt +3 -3
  52. runtime/doc/tagsrch.txt +14 -13
  53. runtime/doc/term.txt +10 -9
  54. runtime/doc/terminal.txt +46 -45
  55. runtime/doc/testing.txt +33 -33
  56. runtime/doc/textprop.txt +6 -6
  57. runtime/doc/tips.txt +5 -5
  58. runtime/doc/undo.txt +12 -11
  59. runtime/doc/userfunc.txt +2 -2
  60. runtime/doc/various.txt +16 -15
  61. runtime/doc/vi_diff.txt +4 -3
  62. runtime/doc/visual.txt +7 -7
  63. runtime/doc/wayland.txt +4 -3
  64. runtime/doc/windows.txt +10 -10
runtime/doc/autocmd.txt CHANGED
@@ -1,4 +1,4 @@
1
- *autocmd.txt* For Vim version 9.1. Last change: 2025 Sep 14
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
@@ -236,7 +236,7 @@ autocmds.
236
 
237
  *:autocmd-verbose*
238
  When 'verbose' is non-zero, listing an autocommand will also display where it
239
- was last defined. Example: >
240
 
241
  :verbose autocmd BufEnter
242
  FileExplorer BufEnter
@@ -344,7 +344,8 @@ Name triggered by ~
344
  |GUIEnter| after starting the GUI successfully
345
  |GUIFailed| after starting the GUI failed
346
  |TermResponse| after the terminal response to |t_RV| is received
347
- |TermResponseAll| after the terminal response to |t_RV| and others is received
 
348
 
349
  |QuitPre| when using `:quit`, before deciding whether to exit
350
  |ExitPre| when using a command that may make Vim exit
@@ -381,7 +382,8 @@ Name triggered by ~
381
  |FocusGained| Vim got input focus
382
  |FocusLost| Vim lost input focus
383
  |CursorHold| the user doesn't press a key for a while
384
- |CursorHoldI| the user doesn't press a key for a while in Insert mode
 
385
  |CursorMoved| the cursor was moved in Normal mode
386
  |CursorMovedC| the cursor was moved in the |Command-line|
387
  |CursorMovedI| the cursor was moved in Insert mode
@@ -566,7 +568,8 @@ BufWinEnter After a buffer is displayed in a window. This
566
  since it reloads that buffer.
567
  Does not happen for a terminal window, because
568
  it starts in Terminal-Job mode and Normal mode
569
- commands won't work. Use |TerminalOpen| instead.
 
570
  *BufWinLeave*
571
  BufWinLeave Before a buffer is removed from a window.
572
  Not when it's still visible in another window.
@@ -679,7 +682,7 @@ ColorScheme After loading a color scheme. |:colorscheme|
679
  Not triggered if the color scheme is not
680
  found.
681
  The pattern is matched against the
682
- colorscheme name. <afile> can be used for the
683
  name of the actual file where this option was
684
  set, and <amatch> for the new colorscheme
685
  name.
@@ -748,7 +751,7 @@ CursorHold When the user doesn't press a key for the time
748
  triggered. |q|
749
  *<CursorHold>*
750
  Internally the autocommand is triggered by the
751
- <CursorHold> key. In an expression mapping
752
  |getchar()| may see this character.
753
 
754
  Note: Interactive commands cannot be used for
@@ -1014,7 +1017,7 @@ InsertLeave Just after leaving Insert mode. Also when
1014
  using CTRL-O |i_CTRL-O|. But not for |i_CTRL-C|.
1015
  *KeyInputPre*
1016
  KeyInputPre Just before a key is processed after mappings
1017
- have been applied. The pattern is matched
1018
  against a string that indicates the current
1019
  mode, which is the same as what is returned by
1020
  `mode(1)`.
@@ -1046,7 +1049,7 @@ MenuPopup Just before showing the popup menu (under the
1046
  c Command line
1047
  tl Terminal
1048
  *ModeChanged*
1049
- ModeChanged After changing the mode. The pattern is
1050
  matched against `'old_mode:new_mode'`, for
1051
  example match against `*:c*` to simulate
1052
  |CmdlineEnter|.
@@ -1082,7 +1085,7 @@ OptionSet After setting an option. The pattern is
1082
 
1083
  |v:option_oldlocal| is only set when |:set|
1084
  or |:setlocal| or a |modeline| was used to set
1085
- the option. Similarly |v:option_oldglobal| is
1086
  only set when |:set| or |:setglobal| was used.
1087
 
1088
  This does not set |<abuf>|, you could use
@@ -1090,10 +1093,10 @@ OptionSet After setting an option. The pattern is
1090
 
1091
  Note that when setting a |global-local| string
1092
  option with |:set|, then |v:option_old| is the
1093
- old global value. However, for all other kinds
1094
- of options (local string options, global-local
1095
- number options, ...) it is the old local
1096
- value.
1097
 
1098
  OptionSet is not triggered on startup and for
1099
  the 'key' option for obvious reasons.
@@ -1105,7 +1108,7 @@ OptionSet After setting an option. The pattern is
1105
 
1106
  Note: It's a bad idea to reset an option
1107
  during this autocommand, this may break a
1108
- plugin. You can always use `:noa` to prevent
1109
  triggering this autocommand.
1110
 
1111
  When using |:set| in the autocommand the event
@@ -1130,7 +1133,7 @@ QuickFixCmdPre Before a quickfix command is run (|:make|,
1130
  *QuickFixCmdPost*
1131
  QuickFixCmdPost Like QuickFixCmdPre, but after a quickfix
1132
  command is run, before jumping to the first
1133
- location. For |:cfile| and |:lfile| commands
1134
  it is run after the error file is read and
1135
  before moving to the first error.
1136
  See |QuickFixCmdPost-example|.
@@ -1174,7 +1177,7 @@ SafeState When nothing is pending, going to wait for the
1174
  screen was scrolled for messages.
1175
  *SafeStateAgain*
1176
  SafeStateAgain Like SafeState but after processing any
1177
- messages and invoking callbacks. This may be
1178
  triggered often, don't do something that takes
1179
  time.
1180
 
@@ -1278,12 +1281,12 @@ TermChanged After the value of 'term' has changed. Useful
1278
  settings. Executed for all loaded buffers.
1279
  *TerminalOpen*
1280
  TerminalOpen Just after a terminal buffer was created, with
1281
- `:terminal` or |term_start()|. This event is
1282
  triggered even if the buffer is created
1283
  without a window, with the ++hidden option.
1284
  *TerminalWinOpen*
1285
  TerminalWinOpen Just after a terminal buffer was created, with
1286
- `:terminal` or |term_start()|. This event is
1287
  triggered only if the buffer is created
1288
  with a window. Can be used to set window
1289
  local options for the terminal window.
@@ -1480,7 +1483,7 @@ WinLeave Before leaving a window. If the window to be
1480
  Not used for ":qa" or ":q" when exiting Vim.
1481
 
1482
  *WinNewPre*
1483
- WinNewPre Before creating a new window. Triggered
1484
  before commands that modify window layout by
1485
  creating a split.
1486
  Not done when creating tab pages and for the
@@ -1789,8 +1792,8 @@ option will not cause any commands to be executed.
1789
  After applying the autocommands the modelines are
1790
  processed, so that their settings overrule the
1791
  settings from autocommands, like what happens when
1792
- editing a file. This is skipped when the <nomodeline>
1793
- argument is present. You probably want to use
1794
  <nomodeline> for events that are not used when loading
1795
  a buffer, such as |User|.
1796
  Processing modelines is also skipped when no
@@ -1802,7 +1805,7 @@ option will not cause any commands to be executed.
1802
  loaded buffer. The current buffer is done last.
1803
 
1804
  Note that [fname] is used to select the autocommands,
1805
- not the buffers to which they are applied. Example: >
1806
  augroup mine
1807
  autocmd!
1808
  autocmd FileType * echo expand('<amatch>')
 
1
+ *autocmd.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
 
236
 
237
  *:autocmd-verbose*
238
  When 'verbose' is non-zero, listing an autocommand will also display where it
239
+ was last defined. Example: >
240
 
241
  :verbose autocmd BufEnter
242
  FileExplorer BufEnter
 
344
  |GUIEnter| after starting the GUI successfully
345
  |GUIFailed| after starting the GUI failed
346
  |TermResponse| after the terminal response to |t_RV| is received
347
+ |TermResponseAll| after the terminal response to |t_RV| and others is
348
+ received
349
 
350
  |QuitPre| when using `:quit`, before deciding whether to exit
351
  |ExitPre| when using a command that may make Vim exit
 
382
  |FocusGained| Vim got input focus
383
  |FocusLost| Vim lost input focus
384
  |CursorHold| the user doesn't press a key for a while
385
+ |CursorHoldI| the user doesn't press a key for a while in Insert
386
+ mode
387
  |CursorMoved| the cursor was moved in Normal mode
388
  |CursorMovedC| the cursor was moved in the |Command-line|
389
  |CursorMovedI| the cursor was moved in Insert mode
 
568
  since it reloads that buffer.
569
  Does not happen for a terminal window, because
570
  it starts in Terminal-Job mode and Normal mode
571
+ commands won't work. Use |TerminalOpen|
572
+ instead.
573
  *BufWinLeave*
574
  BufWinLeave Before a buffer is removed from a window.
575
  Not when it's still visible in another window.
 
682
  Not triggered if the color scheme is not
683
  found.
684
  The pattern is matched against the
685
+ colorscheme name. <afile> can be used for the
686
  name of the actual file where this option was
687
  set, and <amatch> for the new colorscheme
688
  name.
 
751
  triggered. |q|
752
  *<CursorHold>*
753
  Internally the autocommand is triggered by the
754
+ <CursorHold> key. In an expression mapping
755
  |getchar()| may see this character.
756
 
757
  Note: Interactive commands cannot be used for
 
1017
  using CTRL-O |i_CTRL-O|. But not for |i_CTRL-C|.
1018
  *KeyInputPre*
1019
  KeyInputPre Just before a key is processed after mappings
1020
+ have been applied. The pattern is matched
1021
  against a string that indicates the current
1022
  mode, which is the same as what is returned by
1023
  `mode(1)`.
 
1049
  c Command line
1050
  tl Terminal
1051
  *ModeChanged*
1052
+ ModeChanged After changing the mode. The pattern is
1053
  matched against `'old_mode:new_mode'`, for
1054
  example match against `*:c*` to simulate
1055
  |CmdlineEnter|.
 
1085
 
1086
  |v:option_oldlocal| is only set when |:set|
1087
  or |:setlocal| or a |modeline| was used to set
1088
+ the option. Similarly |v:option_oldglobal| is
1089
  only set when |:set| or |:setglobal| was used.
1090
 
1091
  This does not set |<abuf>|, you could use
 
1093
 
1094
  Note that when setting a |global-local| string
1095
  option with |:set|, then |v:option_old| is the
1096
+ old global value. However, for all other
1097
+ kinds of options (local string options,
1098
+ global-local number options, ...) it is the
1099
+ old local value.
1100
 
1101
  OptionSet is not triggered on startup and for
1102
  the 'key' option for obvious reasons.
 
1108
 
1109
  Note: It's a bad idea to reset an option
1110
  during this autocommand, this may break a
1111
+ plugin. You can always use `:noa` to prevent
1112
  triggering this autocommand.
1113
 
1114
  When using |:set| in the autocommand the event
 
1133
  *QuickFixCmdPost*
1134
  QuickFixCmdPost Like QuickFixCmdPre, but after a quickfix
1135
  command is run, before jumping to the first
1136
+ location. For |:cfile| and |:lfile| commands
1137
  it is run after the error file is read and
1138
  before moving to the first error.
1139
  See |QuickFixCmdPost-example|.
 
1177
  screen was scrolled for messages.
1178
  *SafeStateAgain*
1179
  SafeStateAgain Like SafeState but after processing any
1180
+ messages and invoking callbacks. This may be
1181
  triggered often, don't do something that takes
1182
  time.
1183
 
 
1281
  settings. Executed for all loaded buffers.
1282
  *TerminalOpen*
1283
  TerminalOpen Just after a terminal buffer was created, with
1284
+ `:terminal` or |term_start()|. This event is
1285
  triggered even if the buffer is created
1286
  without a window, with the ++hidden option.
1287
  *TerminalWinOpen*
1288
  TerminalWinOpen Just after a terminal buffer was created, with
1289
+ `:terminal` or |term_start()|. This event is
1290
  triggered only if the buffer is created
1291
  with a window. Can be used to set window
1292
  local options for the terminal window.
 
1483
  Not used for ":qa" or ":q" when exiting Vim.
1484
 
1485
  *WinNewPre*
1486
+ WinNewPre Before creating a new window. Triggered
1487
  before commands that modify window layout by
1488
  creating a split.
1489
  Not done when creating tab pages and for the
 
1792
  After applying the autocommands the modelines are
1793
  processed, so that their settings overrule the
1794
  settings from autocommands, like what happens when
1795
+ editing a file. This is skipped when the <nomodeline>
1796
+ argument is present. You probably want to use
1797
  <nomodeline> for events that are not used when loading
1798
  a buffer, such as |User|.
1799
  Processing modelines is also skipped when no
 
1805
  loaded buffer. The current buffer is done last.
1806
 
1807
  Note that [fname] is used to select the autocommands,
1808
+ not the buffers to which they are applied. Example: >
1809
  augroup mine
1810
  autocmd!
1811
  autocmd FileType * echo expand('<amatch>')
runtime/doc/builtin.txt CHANGED
@@ -1,4 +1,4 @@
1
- *builtin.txt* For Vim version 9.1. Last change: 2025 Oct 01
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
@@ -889,7 +889,7 @@ append({lnum}, {text}) *append()*
889
  appendbufline({buf}, {lnum}, {text}) *appendbufline()*
890
  Like |append()| but append the text in buffer {buf}.
891
 
892
- This function works only for loaded buffers. First call
893
  |bufload()| if needed.
894
 
895
  For the use of {buf}, see |bufname()|.
@@ -903,7 +903,7 @@ appendbufline({buf}, {lnum}, {text}) *appendbufline()*
903
  In |Vim9| script an error is given for an invalid {lnum}.
904
 
905
  If {buf} is not a valid buffer or {lnum} is not valid, an
906
- error message is given. Example: >
907
  :let failed = appendbufline(13, 0, "# THE START")
908
  < However, when {text} is an empty list then no error is given
909
  for an invalid {lnum}, since {lnum} isn't actually used.
@@ -1036,19 +1036,19 @@ autocmd_add({acmds}) *autocmd_add()*
1036
  If this item is specified, then the "pattern"
1037
  item is ignored.
1038
  cmd Ex command to execute for this autocmd event
1039
- event autocmd event name. Refer to |autocmd-events|.
1040
  This can be either a String with a single
1041
  event name or a List of event names.
1042
- group autocmd group name. Refer to |autocmd-groups|.
1043
  If this group doesn't exist then it is
1044
  created. If not specified or empty, then the
1045
  default group is used.
1046
  nested boolean flag, set to v:true to add a nested
1047
  autocmd. Refer to |autocmd-nested|.
1048
  once boolean flag, set to v:true to add an autocmd
1049
- which executes only once. Refer to
1050
  |autocmd-once|.
1051
- pattern autocmd pattern string. Refer to
1052
  |autocmd-patterns|. If "bufnr" item is
1053
  present, then this item is ignored. This can
1054
  be a String with a single pattern or a List of
@@ -1057,7 +1057,8 @@ autocmd_add({acmds}) *autocmd_add()*
1057
  commands associated with the specified autocmd
1058
  event and group and add the {cmd}. This is
1059
  useful to avoid adding the same command
1060
- multiple times for an autocmd event in a group.
 
1061
 
1062
  Returns v:true on success and v:false on failure.
1063
  Examples: >
@@ -1080,21 +1081,21 @@ autocmd_delete({acmds}) *autocmd_delete()*
1080
 
1081
  The {acmds} argument is a List where each item is a Dict with
1082
  the following optional items:
1083
- bufnr buffer number to delete a buffer-local autocmd.
1084
- If this item is specified, then the "pattern"
1085
- item is ignored.
1086
  cmd Ex command for this autocmd event
1087
- event autocmd event name. Refer to |autocmd-events|.
1088
  If '*' then all the autocmd events in this
1089
  group are deleted.
1090
- group autocmd group name. Refer to |autocmd-groups|.
1091
  If not specified or empty, then the default
1092
  group is used.
1093
  nested set to v:true for a nested autocmd.
1094
  Refer to |autocmd-nested|.
1095
  once set to v:true for an autocmd which executes
1096
- only once. Refer to |autocmd-once|.
1097
- pattern autocmd pattern string. Refer to
1098
  |autocmd-patterns|. If "bufnr" item is
1099
  present, then this item is ignored.
1100
 
@@ -1128,22 +1129,22 @@ autocmd_delete({acmds}) *autocmd_delete()*
1128
 
1129
 
1130
  autocmd_get([{opts}]) *autocmd_get()*
1131
- Returns a |List| of autocmds. If {opts} is not supplied, then
1132
  returns the autocmds for all the events in all the groups.
1133
 
1134
  The optional {opts} Dict argument supports the following
1135
  items:
1136
- group Autocmd group name. If specified, returns only
1137
- the autocmds defined in this group. If the
1138
- specified group doesn't exist, results in an
1139
- error message. If set to an empty string,
1140
  then the default autocmd group is used.
1141
- event Autocmd event name. If specified, returns only
1142
- the autocmds defined for this event. If set
1143
- to "*", then returns autocmds for all the
1144
  events. If the specified event doesn't exist,
1145
  results in an error message.
1146
- pattern Autocmd pattern. If specified, returns only
1147
  the autocmds defined for this pattern.
1148
  A combination of the above three times can be supplied in
1149
  {opts}.
@@ -1155,11 +1156,12 @@ autocmd_get([{opts}]) *autocmd_get()*
1155
  event Autocmd event name.
1156
  group Autocmd group name.
1157
  nested Boolean flag, set to v:true for a nested
1158
- autocmd. See |autocmd-nested|.
1159
  once Boolean flag, set to v:true, if the autocmd
1160
- will be executed only once. See |autocmd-once|.
1161
  pattern Autocmd pattern. For a buffer-local
1162
- autocmd, this will be of the form "<buffer=n>".
 
1163
  If there are multiple commands for an autocmd event in a
1164
  group, then separate items are returned for each command.
1165
 
@@ -1510,7 +1512,7 @@ bufnr([{buf} [, {create}]]) *bufnr()*
1510
  {create} argument is present and TRUE, a new, unlisted,
1511
  buffer is created and its number is returned. Example: >
1512
  let newbuf = bufnr('Scratch001', 1)
1513
- < Using an empty name uses the current buffer. To create a new
1514
  buffer with an empty name use |bufadd()|.
1515
 
1516
  bufnr("$") is the last buffer: >
@@ -1698,7 +1700,8 @@ char2nr({string} [, {utf8}]) *char2nr()*
1698
  Examples: >
1699
  char2nr(" ") returns 32
1700
  char2nr("ABC") returns 65
1701
- < When {utf8} is omitted or zero, the current 'encoding' is used.
 
1702
  Example for "utf-8": >
1703
  char2nr("á") returns 225
1704
  char2nr("á"[0]) returns 195
@@ -1763,7 +1766,7 @@ charidx({string}, {idx} [, {countcc} [, {utf16}]])
1763
  index in the String {expr} instead of as the byte index.
1764
 
1765
  Returns -1 if the arguments are invalid or if there are less
1766
- than {idx} bytes. If there are exactly {idx} bytes the length
1767
  of the string in characters is returned.
1768
 
1769
  An error is given and -1 is returned if the first argument is
@@ -1855,7 +1858,7 @@ cmdcomplete_info() *cmdcomplete_info()*
1855
  completion began.
1856
  pum_visible |TRUE| if popup menu is visible.
1857
  See |pumvisible()|.
1858
- matches List of all completion candidates. Each item
1859
  is a string.
1860
  selected Selected item index. First index is zero.
1861
  Index is -1 if no item is selected (showing
@@ -1877,7 +1880,7 @@ col({expr} [, {winid}]) *col()*
1877
  When {expr} is "$", it means the end of the cursor line, so
1878
  the result is the number of bytes in the cursor line plus one.
1879
  Additionally {expr} can be [lnum, col]: a |List| with the line
1880
- and column number. Most useful when the column is "$", to get
1881
  the last column of a specific line. When "lnum" or "col" is
1882
  out of range then col() returns zero.
1883
 
@@ -1914,7 +1917,7 @@ col({expr} [, {winid}]) *col()*
1914
 
1915
 
1916
  complete({startcol}, {matches}) *complete()* *E785*
1917
- Set the matches for Insert mode completion. Can only be
1918
  used in Insert mode. Typically invoked from a mapping with
1919
  CTRL-R = (see |i_CTRL-R|), but may also be called from a
1920
  |<Cmd>| or |<ScriptCmd>| mapping. It does not work after
@@ -2001,12 +2004,13 @@ complete_info([{what}]) *complete_info()*
2001
  See |complete_info_mode| for the values.
2002
  pum_visible |TRUE| if popup menu is visible.
2003
  See |pumvisible()|.
2004
- items List of all completion candidates. Each item
2005
  is a dictionary containing the entries "word",
2006
- "abbr", "menu", "kind", "info" and "user_data".
 
2007
  See |complete-items|.
2008
  matches Same as "items", but only returns items that
2009
- are matching current query. If both "matches"
2010
  and "items" are in "what", the returned list
2011
  will still be named "items", but each item
2012
  will have an additional "match" field.
@@ -2045,7 +2049,7 @@ complete_info([{what}]) *complete_info()*
2045
  {what} are silently ignored.
2046
 
2047
  To get the position and size of the popup menu, see
2048
- |pum_getpos()|. It's also available in |v:event| during the
2049
  |CompleteChanged| event.
2050
 
2051
  Returns an empty |Dictionary| on error.
@@ -2065,13 +2069,13 @@ complete_info([{what}]) *complete_info()*
2065
 
2066
  complete_match([{lnum}, {col}]) *complete_match()*
2067
  Searches backward from the given position and returns a List
2068
- of matches according to the 'isexpand' option. When no
2069
  arguments are provided, uses the current cursor position.
2070
 
2071
  Each match is represented as a List containing
2072
  [startcol, trigger_text] where:
2073
  - startcol: column position where completion should start,
2074
- or -1 if no trigger position is found. For multi-character
2075
  triggers, returns the column of the first character.
2076
  - trigger_text: the matching trigger string from 'isexpand',
2077
  or empty string if no match was found or when using the
@@ -2228,7 +2232,7 @@ count({comp}, {expr} [, {ic} [, {start}]]) *count()* *E706*
2228
  When {ic} is given and it's |TRUE| then case is ignored.
2229
 
2230
  When {comp} is a string then the number of not overlapping
2231
- occurrences of {expr} is returned. Zero is returned when
2232
  {expr} is an empty string.
2233
 
2234
  Can also be used as a |method|: >
@@ -2322,7 +2326,7 @@ cursor({list})
2322
  debugbreak({pid}) *debugbreak()*
2323
  Specifically used to interrupt a program being debugged. It
2324
  will cause process {pid} to get a SIGTRAP. Behavior for other
2325
- processes is undefined. See |terminal-debugger|.
2326
  {only available on MS-Windows}
2327
 
2328
  Returns |TRUE| if successfully interrupted the program.
@@ -2397,13 +2401,13 @@ deletebufline({buf}, {first} [, {last}]) *deletebufline()*
2397
  If {last} is omitted then delete line {first} only.
2398
  On success 0 is returned, on failure 1 is returned.
2399
 
2400
- This function works only for loaded buffers. First call
2401
  |bufload()| if needed.
2402
 
2403
  For the use of {buf}, see |bufname()| above.
2404
 
2405
- {first} and {last} are used like with |getline()|. Note that
2406
- when using |line()| this refers to the current buffer. Use "$"
2407
  to refer to the last line in buffer {buf}.
2408
 
2409
  Can also be used as a |method|: >
@@ -2640,7 +2644,7 @@ digraph_setlist({digraphlist}) *digraph_setlist()*
2640
 
2641
  echoraw({string}) *echoraw()*
2642
  Output {string} as-is, including unprintable characters.
2643
- This can be used to output a terminal code. For example, to
2644
  disable modifyOtherKeys: >
2645
  call echoraw(&t_TE)
2646
  < and to enable it again: >
@@ -2673,7 +2677,7 @@ empty({expr}) *empty()*
2673
 
2674
 
2675
  environ() *environ()*
2676
- Return all of environment variables as dictionary. You can
2677
  check if an environment variable exists like this: >
2678
  :echo has_key(environ(), 'HOME')
2679
  < Note that the variable name may be CamelCase; to ignore case
@@ -3157,21 +3161,21 @@ feedkeys({string} [, {mode}]) *feedkeys()*
3157
  {string}.
3158
 
3159
  To include special keys into {string}, use double-quotes
3160
- and "\..." notation |expr-quote|. For example,
3161
- feedkeys("\<CR>") simulates pressing of the <Enter> key. But
3162
  feedkeys('\<CR>') pushes 5 characters.
3163
  A special code that might be useful is <Ignore>, it exits the
3164
  wait for a character without doing anything. *<Ignore>*
3165
 
3166
  {mode} is a String, which can contain these character flags:
3167
- 'm' Remap keys. This is default. If {mode} is absent,
3168
  keys are remapped.
3169
  'n' Do not remap keys.
3170
  't' Handle keys as if typed; otherwise they are handled as
3171
  if coming from a mapping. This matters for undo,
3172
  opening folds, etc.
3173
  'L' Lowlevel input. Only works for Unix or when using the
3174
- GUI. Keys are used as if they were coming from the
3175
  terminal. Other flags are not used. *E980*
3176
  When a CTRL-C interrupts and 't' is included it sets
3177
  the internal "got_int" flag.
@@ -3191,7 +3195,7 @@ feedkeys({string} [, {mode}]) *feedkeys()*
3191
  legacy script syntax applies, "s:var" does not work,
3192
  etc. Note that if the string being fed sets a script
3193
  context this still applies.
3194
- '!' When used with 'x' will not end Insert mode. Can be
3195
  used in a test when a timer is set to exit Insert mode
3196
  a little later. Useful for testing CursorHoldI.
3197
 
@@ -3204,7 +3208,7 @@ feedkeys({string} [, {mode}]) *feedkeys()*
3204
 
3205
 
3206
  filecopy({from}, {to}) *filecopy()*
3207
- Copy the file pointed to by the name {from} to {to}. The
3208
  result is a Number, which is |TRUE| if the file was copied
3209
  successfully, and |FALSE| when it failed.
3210
  If a file with name {to} already exists, it will fail.
@@ -3265,7 +3269,7 @@ filter({expr1}, {expr2}) *filter()*
3265
  of the current item. For a |Dictionary| |v:key| has the key
3266
  of the current item and for a |List| |v:key| has the index of
3267
  the current item. For a |Blob| |v:key| has the index of the
3268
- current byte. For a |String| |v:key| has the index of the
3269
  current character.
3270
  Examples: >
3271
  call filter(mylist, 'v:val !~ "OLD"')
@@ -3307,8 +3311,8 @@ filter({expr1}, {expr2}) *filter()*
3307
  or a new |Blob| or |String|.
3308
  When an error is encountered while evaluating {expr2} no
3309
  further items in {expr1} are processed.
3310
- When {expr2} is a Funcref errors inside a function are ignored,
3311
- unless it was defined with the "abort" flag.
3312
 
3313
  Can also be used as a |method|: >
3314
  mylist->filter(expr2)
@@ -3588,7 +3592,7 @@ foldtextresult({lnum}) *foldtextresult()*
3588
  foreach({expr1}, {expr2}) *foreach()* *E1525*
3589
  {expr1} must be a |List|, |Tuple|, |String|, |Blob| or
3590
  |Dictionary|.
3591
- For each item in {expr1} execute {expr2}. {expr1} is not
3592
  modified; its values may be, as with |:lockvar| 1. |E741|
3593
  See |map()| and |filter()| to modify {expr1}.
3594
 
@@ -3598,7 +3602,7 @@ foreach({expr1}, {expr2}) *foreach()* *E1525*
3598
  of the current item. For a |Dictionary| |v:key| has the key
3599
  of the current item and for a |List| or a |Tuple| |v:key| has
3600
  the index of the current item. For a |Blob| |v:key| has the
3601
- index of the current byte. For a |String| |v:key| has the
3602
  index of the current character.
3603
  Examples: >
3604
  call foreach(mylist, 'used[v:val] = true')
@@ -3619,8 +3623,8 @@ foreach({expr1}, {expr2}) *foreach()* *E1525*
3619
  Returns {expr1} in all cases.
3620
  When an error is encountered while executing {expr2} no
3621
  further items in {expr1} are processed.
3622
- When {expr2} is a Funcref errors inside a function are ignored,
3623
- unless it was defined with the "abort" flag.
3624
 
3625
  Can also be used as a |method|: >
3626
  mylist->foreach(expr2)
@@ -3672,7 +3676,7 @@ funcref({name} [, {arglist}] [, {dict}]) *funcref()*
3672
  It only works for an autoloaded function if it has already
3673
  been loaded (to avoid mistakenly loading the autoload script
3674
  when only intending to use the function name, use |function()|
3675
- instead). {name} cannot be a builtin function.
3676
  Returns 0 on error.
3677
 
3678
  Can also be used as a |method|: >
@@ -3688,7 +3692,7 @@ function({name} [, {arglist}] [, {dict}])
3688
 
3689
  {name} can also be a Funcref or a partial. When it is a
3690
  partial the dict stored in it will be used and the {dict}
3691
- argument is not allowed. E.g.: >
3692
  let FuncWithArg = function(dict.Func, [arg])
3693
  let Broken = function(dict.Func, [arg], dict)
3694
  <
@@ -3697,8 +3701,8 @@ function({name} [, {arglist}] [, {dict}])
3697
  same function.
3698
 
3699
  When {arglist} or {dict} is present this creates a partial.
3700
- That means the argument list and/or the dictionary is stored in
3701
- the Funcref and will be used when the Funcref is called.
3702
 
3703
  The arguments are passed to the function in front of other
3704
  arguments, but after any argument from |method|. Example: >
@@ -3732,7 +3736,7 @@ function({name} [, {arglist}] [, {dict}])
3732
  call Callback('one', 'two', 'name')
3733
 
3734
  < The Dictionary is only useful when calling a "dict" function.
3735
- In that case the {dict} is passed in as "self". Example: >
3736
  function Callback() dict
3737
  echo "called for " .. self.name
3738
  endfunction
@@ -4004,12 +4008,14 @@ getcellpixels() *getcellpixels()*
4004
  Returns a |List| of terminal cell pixel size.
4005
  List format is [xpixel, ypixel].
4006
 
4007
- Only works on Unix (terminal and gVim) and Windows (gVim only).
 
4008
  Returns [] on other systems or on failure.
4009
- Note that there could be variations across different terminals.
 
4010
  On macOS, system Terminal.app returns sizes in points (before
4011
- Retina scaling), whereas third-party terminals return raw pixel
4012
- sizes (post Retina scaling).
4013
 
4014
  Return type: list<any>
4015
 
@@ -4024,8 +4030,8 @@ getcellwidths() *getcellwidths()*
4024
 
4025
 
4026
  getchangelist([{buf}]) *getchangelist()*
4027
- Returns the |changelist| for the buffer {buf}. For the use
4028
- of {buf}, see |bufname()| above. If buffer {buf} doesn't
4029
  exist, an empty list is returned.
4030
 
4031
  The returned list contains two entries: a list with the change
@@ -4036,7 +4042,7 @@ getchangelist([{buf}]) *getchangelist()*
4036
  coladd column offset for 'virtualedit'
4037
  lnum line number
4038
  If buffer {buf} is the current buffer, then the current
4039
- position refers to the position in the list. For other
4040
  buffers, it is set to the length of the list.
4041
 
4042
  Can also be used as a |method|: >
@@ -4143,7 +4149,7 @@ getchar([{expr} [, {opts}]]) *getchar()*
4143
  :endfunction
4144
  <
4145
  You may also receive synthetic characters, such as
4146
- |<CursorHold>|. Often you will want to ignore this and get
4147
  another character: >
4148
  :function GetKey()
4149
  : let c = getchar()
@@ -4176,7 +4182,7 @@ getcharmod() *getcharmod()*
4176
 
4177
 
4178
  getcharpos({expr}) *getcharpos()*
4179
- Get the position for String {expr}. Same as |getpos()| but the
4180
  column number in the returned List is a character index
4181
  instead of a byte index.
4182
  If |getpos()| returns a very large column number, equal to
@@ -4300,7 +4306,7 @@ getcmdscreenpos() *getcmdscreenpos()*
4300
 
4301
 
4302
  getcmdtype() *getcmdtype()*
4303
- Return the current command-line type. Possible return values
4304
  are:
4305
  : normal Ex command
4306
  > debug mode command |debug-mode|
@@ -4318,15 +4324,15 @@ getcmdtype() *getcmdtype()*
4318
 
4319
 
4320
  getcmdwintype() *getcmdwintype()*
4321
- Return the current |command-line-window| type. Possible return
4322
- values are the same as |getcmdtype()|. Returns an empty string
4323
  when not in the command-line window.
4324
 
4325
  Return type: |String|
4326
 
4327
 
4328
  getcompletion({pat}, {type} [, {filtered}]) *getcompletion()*
4329
- Return a list of command-line completion matches. The String
4330
  {type} argument specifies what for. The following completion
4331
  types are supported:
4332
 
@@ -4383,10 +4389,10 @@ getcompletion({pat}, {type} [, {filtered}]) *getcompletion()*
4383
 
4384
  If the optional {filtered} flag is set to 1, then 'wildignore'
4385
  is applied to filter the results. Otherwise all the matches
4386
- are returned. The 'wildignorecase' option always applies.
4387
 
4388
  If the 'wildoptions' option contains 'fuzzy', then fuzzy
4389
- matching is used to get the completion matches. Otherwise
4390
  regular expression matching is used. Thus this function
4391
  follows the user preference, what happens on the command line.
4392
  If you do not want this you can make 'wildoptions' empty
@@ -4423,8 +4429,8 @@ getcurpos([{winid}])
4423
  cursor vertically. After |$| command it will be a very large
4424
  number equal to |v:maxcol|. Also see |getcursorcharpos()| and
4425
  |getpos()|.
4426
- The first "bufnum" item is always zero. The byte position of
4427
- the cursor is returned in 'col'. To get the character
4428
  position, use |getcursorcharpos()|.
4429
 
4430
  The optional {winid} argument can specify the window. It can
@@ -4472,7 +4478,7 @@ getcwd([{winnr} [, {tabnr}]]) *getcwd()*
4472
  directory. See also |haslocaldir()|.
4473
 
4474
  With {winnr} and {tabnr} return the local current directory of
4475
- the window in the specified tab page. If {winnr} is -1 return
4476
  the working directory of the tabpage.
4477
  If {winnr} is zero use the current window, if {tabnr} is zero
4478
  use the current tabpage.
@@ -4679,19 +4685,19 @@ getloclist({nr} [, {what}]) *getloclist()*
4679
 
4680
  For a location list window, the displayed location list is
4681
  returned. For an invalid window number {nr}, an empty list is
4682
- returned. Otherwise, same as |getqflist()|.
4683
 
4684
  If the optional {what} dictionary argument is supplied, then
4685
- returns the items listed in {what} as a dictionary. Refer to
4686
  |getqflist()| for the supported items in {what}.
4687
 
4688
  In addition to the items supported by |getqflist()| in {what},
4689
  the following item is supported by |getloclist()|:
4690
 
4691
  filewinid id of the window used to display files
4692
- from the location list. This field is
4693
  applicable only when called from a
4694
- location list window. See
4695
  |location-list-file-window| for more
4696
  details.
4697
 
@@ -4852,7 +4858,7 @@ getpos({expr}) *getpos()*
4852
 
4853
  For getting the cursor position see |getcurpos()|.
4854
  The column number in the returned List is the byte position
4855
- within the line. To get the character position in the line,
4856
  use |getcharpos()|.
4857
 
4858
  Note that for '< and '> Visual mode matters: when it is "V"
@@ -4898,7 +4904,7 @@ getqflist([{what}]) *getqflist()*
4898
  any type.
4899
 
4900
  When there is no error list or it's empty, an empty list is
4901
- returned. Quickfix list entries with a non-existing buffer
4902
  number are returned with "bufnr" set to zero (Note: some
4903
  functions accept buffer number zero for the alternate buffer,
4904
  you may need to explicitly check for zero).
@@ -4911,12 +4917,12 @@ getqflist([{what}]) *getqflist()*
4911
  :endfor
4912
  <
4913
  If the optional {what} dictionary argument is supplied, then
4914
- returns only the items listed in {what} as a dictionary. The
4915
  following string items are supported in {what}:
4916
  changedtick get the total number of changes made
4917
  to the list |quickfix-changedtick|
4918
  context get the |quickfix-context|
4919
- efm errorformat to use when parsing "lines". If
4920
  not present, then the 'errorformat' option
4921
  value is used.
4922
  id get information for the quickfix list with
@@ -4930,24 +4936,24 @@ getqflist([{what}]) *getqflist()*
4930
  lines parse a list of lines using 'efm' and return
4931
  the resulting entries. Only a |List| type is
4932
  accepted. The current quickfix list is not
4933
- modified. See |quickfix-parse|.
4934
  nr get information for this quickfix list; zero
4935
  means the current quickfix list and "$" means
4936
  the last quickfix list
4937
  qfbufnr number of the buffer displayed in the quickfix
4938
- window. Returns 0 if the quickfix buffer is
4939
- not present. See |quickfix-buffer|.
4940
  size number of entries in the quickfix list
4941
  title get the list title |quickfix-title|
4942
  winid get the quickfix |window-ID|
4943
  all all of the above quickfix properties
4944
- Non-string items in {what} are ignored. To get the value of a
4945
  particular item, set it to zero.
4946
  If "nr" is not present then the current quickfix list is used.
4947
  If both "nr" and a non-zero "id" are specified, then the list
4948
  specified by "id" is used.
4949
  To get the number of lists in the quickfix stack, set "nr" to
4950
- "$" in {what}. The "nr" value in the returned dictionary
4951
  contains the quickfix stack size.
4952
  When "lines" is specified, all the other items except "efm"
4953
  are ignored. The returned dictionary contains the entry
@@ -4956,22 +4962,23 @@ getqflist([{what}]) *getqflist()*
4956
  The returned dictionary contains the following entries:
4957
  changedtick total number of changes made to the
4958
  list |quickfix-changedtick|
4959
- context quickfix list context. See |quickfix-context|
4960
  If not present, set to "".
4961
- id quickfix list ID |quickfix-ID|. If not
4962
  present, set to 0.
4963
- idx index of the quickfix entry in the list. If not
4964
- present, set to 0.
4965
- items quickfix list entries. If not present, set to
4966
  an empty list.
4967
- nr quickfix list number. If not present, set to 0
 
4968
  qfbufnr number of the buffer displayed in the quickfix
4969
- window. If not present, set to 0.
4970
- size number of entries in the quickfix list. If not
4971
- present, set to 0.
4972
- title quickfix list title text. If not present, set
4973
  to "".
4974
- winid quickfix |window-ID|. If not present, set to 0
4975
 
4976
  Examples (See also |getqflist-examples|): >
4977
  :echo getqflist({'all': 1})
@@ -4996,7 +5003,7 @@ getreg([{regname} [, 1 [, {list}]]]) *getreg()*
4996
  argument is ignored, thus you can always give it.
4997
 
4998
  If {list} is present and |TRUE|, the result type is changed
4999
- to |List|. Each list item is one text line. Use it if you care
5000
  about zero bytes possibly present inside register: without
5001
  third argument both NLs and zero bytes are represented as NLs
5002
  (see |NL-used-for-Nul|).
@@ -5170,7 +5177,7 @@ getscriptinfo([{opts}]) *getscriptinfo()*
5170
 
5171
  The optional Dict argument {opts} supports the following
5172
  optional items:
5173
- name Script name match pattern. If specified,
5174
  and "sid" is not specified, information about
5175
  scripts with a name that match the pattern
5176
  "name" are returned.
@@ -5224,7 +5231,7 @@ getstacktrace() *getstacktrace()*
5224
 
5225
  gettabinfo([{tabnr}]) *gettabinfo()*
5226
  If {tabnr} is not specified, then information about all the
5227
- tab pages is returned as a |List|. Each List item is a
5228
  |Dictionary|. Otherwise, {tabnr} specifies the tab page
5229
  number and information about that one is returned. If the tab
5230
  page does not exist an empty List is returned.
@@ -5290,16 +5297,17 @@ gettabwinvar({tabnr}, {winnr}, {varname} [, {def}]) *gettabwinvar()*
5290
 
5291
 
5292
  gettagstack([{winnr}]) *gettagstack()*
5293
- The result is a Dict, which is the tag stack of window {winnr}.
 
5294
  {winnr} can be the window number or the |window-ID|.
5295
  When {winnr} is not specified, the current window is used.
5296
  When window {winnr} doesn't exist, an empty Dict is returned.
5297
 
5298
  The returned dictionary contains the following entries:
5299
- curidx Current index in the stack. When at
5300
  top of the stack, set to (length + 1).
5301
  Index of bottom of the stack is 1.
5302
- items List of items in the stack. Each item
5303
  is a dictionary containing the
5304
  entries described below.
5305
  length Number of entries in the stack.
@@ -5310,9 +5318,9 @@ gettagstack([{winnr}]) *gettagstack()*
5310
  from cursor position before the tag jump.
5311
  See |getpos()| for the format of the
5312
  returned list.
5313
- matchnr current matching tag number. Used when
5314
- multiple matching tags are found for a
5315
- name.
5316
  tagname name of the tag
5317
 
5318
  See |tagstack| for more information about the tag stack.
@@ -5417,7 +5425,7 @@ getwinpos([{timeout}]) *getwinpos()*
5417
 
5418
  getwinposx() *getwinposx()*
5419
  The result is a Number, which is the X coordinate in pixels of
5420
- the left hand side of the GUI Vim window. Also works for an
5421
  xterm (uses a timeout of 100 msec).
5422
  The result will be -1 if the information is not available
5423
  (e.g. on the Wayland backend).
@@ -5460,7 +5468,7 @@ glob({expr} [, {nosuf} [, {list} [, {alllinks}]]]) *glob()*
5460
  'wildignorecase' always applies.
5461
 
5462
  When {list} is present and it is |TRUE| the result is a |List|
5463
- with all matching files. The advantage of using a List is,
5464
  you also get filenames containing newlines correctly.
5465
  Otherwise the result is a String and when there are several
5466
  matches, they are separated by <NL> characters.
@@ -5530,10 +5538,10 @@ globpath({path}, {expr} [, {nosuf} [, {list} [, {alllinks}]]])
5530
  'suffixes' affect the ordering of matches.
5531
 
5532
  When {list} is present and it is |TRUE| the result is a |List|
5533
- with all matching files. The advantage of using a List is, you
5534
- also get filenames containing newlines correctly. Otherwise
5535
- the result is a String and when there are several matches,
5536
- they are separated by <NL> characters. Example: >
5537
  :echo globpath(&rtp, "syntax/c.vim", 0, 1)
5538
  <
5539
  {alllinks} is used as with |glob()|.
@@ -5804,24 +5812,24 @@ hlget([{name} [, {resolve}]]) *hlget()*
5804
  cleared boolean flag, set to v:true if the highlight
5805
  group attributes are cleared or not yet
5806
  specified. See |highlight-clear|.
5807
- cterm cterm attributes. See |highlight-cterm|.
5808
  ctermbg cterm background color.
5809
  See |highlight-ctermbg|.
5810
  ctermfg cterm foreground color.
5811
  See |highlight-ctermfg|.
5812
  ctermul cterm underline color. See |highlight-ctermul|.
5813
  default boolean flag, set to v:true if the highlight
5814
- group link is a default link. See
5815
  |highlight-default|.
5816
  font highlight group font. See |highlight-font|.
5817
- gui gui attributes. See |highlight-gui|.
5818
  guibg gui background color. See |highlight-guibg|.
5819
  guifg gui foreground color. See |highlight-guifg|.
5820
  guisp gui special color. See |highlight-guisp|.
5821
  id highlight group ID.
5822
  linksto linked highlight group name.
5823
  See |:highlight-link|.
5824
- name highlight group name. See |group-name|.
5825
  start start terminal keycode. See |highlight-start|.
5826
  stop stop terminal keycode. See |highlight-stop|.
5827
  term term attributes. See |highlight-term|.
@@ -5845,7 +5853,7 @@ hlget([{name} [, {resolve}]]) *hlget()*
5845
  hlset({list}) *hlset()*
5846
  Creates or modifies the attributes of a List of highlight
5847
  groups. Each item in {list} is a dictionary containing the
5848
- attributes of a highlight group. See |hlget()| for the list of
5849
  supported items in this dictionary.
5850
 
5851
  In addition to the items described in |hlget()|, the following
@@ -5947,16 +5955,16 @@ iconv({string}, {from}, {to}) *iconv()*
5947
 
5948
  id({item}) *id()*
5949
  The result is a unique String associated with the {item} and
5950
- not with the {item}'s contents. It is only valid while the
5951
- {item} exists and is referenced. It is valid only in the
5952
- instance of vim that produces the result. The whole idea is
5953
  that `id({item})` does not change if the contents of {item}
5954
- changes. This is useful as a `key` for creating an identity
5955
  dictionary, rather than one based on equals.
5956
 
5957
  This operation does not reference {item} and there is no
5958
- function to convert the `id` to the {item}. It may be useful to
5959
- have a map of `id` to {item}. The following >
5960
  var referenceMap: dict<any>
5961
  var id = item->id()
5962
  referenceMap[id] = item
@@ -5964,7 +5972,7 @@ id({item}) *id()*
5964
  way to get the {item} from the `id`.
5965
 
5966
  {item} may be a List, Tuple, Dictionary, Object, Job, Channel
5967
- or Blob. If the item is not a permitted type, or it is a null
5968
  value, then an empty String is returned.
5969
 
5970
  Can also be used as a |method|: >
@@ -6160,7 +6168,8 @@ inputrestore() *inputrestore()*
6160
  Restore typeahead that was saved with a previous |inputsave()|.
6161
  Should be called the same number of times inputsave() is
6162
  called. Calling it more often is harmless though.
6163
- Returns TRUE when there is nothing to restore, FALSE otherwise.
 
6164
 
6165
  Return type: |Number|
6166
 
@@ -6259,10 +6268,11 @@ invert({expr}) *invert()*
6259
  isabsolutepath({path}) *isabsolutepath()*
6260
  The result is a Number, which is |TRUE| when {path} is an
6261
  absolute path.
6262
- On Unix, a path is considered absolute when it starts with '/'.
6263
- On MS-Windows, it is considered absolute when it starts with an
6264
- optional drive prefix and is followed by a '\' or '/'. UNC paths
6265
- are always absolute.
 
6266
  Example: >
6267
  echo isabsolutepath('/usr/share/') " 1
6268
  echo isabsolutepath('./foobar') " 0
@@ -6408,7 +6418,7 @@ js_encode({expr}) *js_encode()*
6408
  [1,,{one:1},,] ~
6409
  While json_encode() would produce:
6410
  [1,null,{"one":1},null] ~
6411
- This encoding is valid for JavaScript. It is more efficient
6412
  than JSON, especially when using an array with optional items.
6413
 
6414
  Can also be used as a |method|: >
@@ -6427,7 +6437,7 @@ json_decode({string}) *json_decode()* *E491*
6427
  - Integer keys are accepted in objects, e.g. {1:2} is the
6428
  same as {"1":2}.
6429
  - More floating point numbers are recognized, e.g. "1." for
6430
- "1.0", or "001.2" for "1.2". Special floating point values
6431
  "Infinity", "-Infinity" and "NaN" (capitalization ignored)
6432
  are accepted.
6433
  - Leading zeroes in integer numbers are ignored, e.g. "012"
@@ -6690,7 +6700,8 @@ list2str({list} [, {utf8}]) *list2str()*
6690
  join(map(list, {nr, val -> nr2char(val)}), '')
6691
  < |str2list()| does the opposite.
6692
 
6693
- When {utf8} is omitted or zero, the current 'encoding' is used.
 
6694
  When {utf8} is TRUE, always return UTF-8 characters.
6695
  With UTF-8 composing characters work as expected: >
6696
  list2str([97, 769]) returns "á"
@@ -6725,7 +6736,7 @@ list2tuple({list}) *list2tuple()*
6725
  listener_add({callback} [, {buf} [, {unbuffered}]]) *listener_add()*
6726
  Add a callback function that will be invoked when changes have
6727
  been made to buffer {buf}.
6728
- {buf} refers to a buffer name or number. For the accepted
6729
  values, see |bufname()|. When {buf} is omitted the current
6730
  buffer is used.
6731
  Returns a unique ID that can be passed to |listener_remove()|.
@@ -6791,16 +6802,16 @@ listener_add({callback} [, {buf} [, {unbuffered}]]) *listener_add()*
6791
 
6792
  Because of the third trigger reason for triggering a callback
6793
  listed above, the line numbers passed to the callback are not
6794
- guaranteed to be valid. If this is a problem then make
6795
  {unbuffered} |TRUE|.
6796
 
6797
  When {unbuffered} is |TRUE| the {callback} is invoked for every
6798
- single change. The changes list only holds a single dictionary
6799
- and the "start", "end" and "added" values in the dictionary are
6800
- the same as the corresponding callback arguments. The line
6801
- numbers are valid when the callback is invoked, but later
6802
- changes may make them invalid, thus keeping a copy for later
6803
- might not work.
6804
 
6805
  The {callback} is invoked with the text locked, see
6806
  |textlock|. If you do need to make changes to the buffer, use
@@ -6827,7 +6838,7 @@ listener_flush([{buf}]) *listener_flush()*
6827
  Invoke listener callbacks for buffer {buf}. If there are no
6828
  pending changes then no callbacks are invoked.
6829
 
6830
- {buf} refers to a buffer name or number. For the accepted
6831
  values, see |bufname()|. When {buf} is omitted the current
6832
  buffer is used.
6833
 
@@ -6890,7 +6901,7 @@ log10({expr}) *log10()*
6890
 
6891
  luaeval({expr} [, {expr}]) *luaeval()*
6892
  Evaluate Lua expression {expr} and return its result converted
6893
- to Vim data structures. Second {expr} may hold additional
6894
  argument accessible as _A inside first {expr}.
6895
  Strings are returned as they are.
6896
  Boolean objects are converted to numbers.
@@ -6927,7 +6938,7 @@ map({expr1}, {expr2}) *map()*
6927
  of the current item. For a |Dictionary| |v:key| has the key
6928
  of the current item and for a |List| |v:key| has the index of
6929
  the current item. For a |Blob| |v:key| has the index of the
6930
- current byte. For a |String| |v:key| has the index of the
6931
  current character.
6932
  Example: >
6933
  :call map(mylist, '"> " .. v:val .. " <"')
@@ -6945,7 +6956,7 @@ map({expr1}, {expr2}) *map()*
6945
  accepts one argument, but with a Vim9 lambda you get "E1106:
6946
  One argument too many", the number of arguments must match.
6947
 
6948
- The function must return the new value of the item. Example
6949
  that changes each value by "key-value": >
6950
  func KeyValue(key, val)
6951
  return a:key .. '-' .. a:val
@@ -6966,8 +6977,8 @@ map({expr1}, {expr2}) *map()*
6966
  or a new |Blob| or |String|.
6967
  When an error is encountered while evaluating {expr2} no
6968
  further items in {expr1} are processed.
6969
- When {expr2} is a Funcref errors inside a function are ignored,
6970
- unless it was defined with the "abort" flag.
6971
 
6972
  Can also be used as a |method|: >
6973
  mylist->map(expr2)
@@ -6980,8 +6991,8 @@ maparg({name} [, {mode} [, {abbr} [, {dict}]]]) *maparg()*
6980
  When {dict} is omitted or zero: Return the rhs of mapping
6981
  {name} in mode {mode}. The returned String has special
6982
  characters translated like in the output of the ":map" command
6983
- listing. When {dict} is TRUE a dictionary is returned, see
6984
- below. To get a list of all mappings see |maplist()|.
6985
 
6986
  When there is no mapping for {name}, an empty String is
6987
  returned if {dict} is FALSE, otherwise returns an empty Dict.
@@ -7020,7 +7031,7 @@ maparg({name} [, {mode} [, {abbr} [, {dict}]]]) *maparg()*
7020
  "script" 1 if mapping was defined with <script>.
7021
  "expr" 1 for an expression mapping (|:map-<expr>|).
7022
  "buffer" 1 for a buffer local mapping (|:map-local|).
7023
- "mode" Modes for which the mapping is defined. In
7024
  addition to the modes mentioned above, these
7025
  characters will be used:
7026
  " " Normal, Visual and Operator-pending
@@ -7036,7 +7047,7 @@ maparg({name} [, {mode} [, {abbr} [, {dict}]]]) *maparg()*
7036
  "abbr" True if this is an abbreviation |abbreviations|.
7037
  "mode_bits" Vim's internal binary representation of "mode".
7038
  |mapset()| ignores this; only "mode" is used.
7039
- See |maplist()| for usage examples. The values
7040
  are from src/vim.h and may change in the future.
7041
 
7042
  The dictionary can be used to restore a mapping with
@@ -7104,9 +7115,9 @@ maplist([{abbr}]) *maplist()*
7104
  echo maplist()->filter(
7105
  (_, m) => match(m.rhs, 'MultiMatch') >= 0)
7106
  < It can be tricky to find mappings for particular |:map-modes|.
7107
- |mapping-dict|'s "mode_bits" can simplify this. For example,
7108
  the mode_bits for Normal, Insert or Command-line modes are
7109
- 0x19. To find all the mappings available in those modes you
7110
  can do: >
7111
  vim9script
7112
  var saved_maps = []
@@ -7118,7 +7129,7 @@ maplist([{abbr}]) *maplist()*
7118
  echo saved_maps->mapnew((_, m) => m.lhs)
7119
  < The values of the mode_bits are defined in Vim's src/vim.h
7120
  file and they can be discovered at runtime using
7121
- |:map-commands| and "maplist()". Example: >
7122
  vim9script
7123
  omap xyzzy <Nop>
7124
  var op_bit = maplist()->filter(
@@ -7144,8 +7155,9 @@ mapset({dict})
7144
  Restore a mapping from a dictionary, possibly returned by
7145
  |maparg()| or |maplist()|. A buffer mapping, when dict.buffer
7146
  is true, is set on the current buffer; it is up to the caller
7147
- to ensure that the intended buffer is the current buffer. This
7148
- feature allows copying mappings from one buffer to another.
 
7149
  The dict.mode value may restore a single mapping that covers
7150
  more than one mode, like with mode values of '!', ' ', 'nox',
7151
  or 'v'. *E1276*
@@ -7284,9 +7296,9 @@ matchadd({group}, {pattern} [, {priority} [, {id} [, {dict}]]])
7284
  automatically chooses a free ID, which is at least 1000.
7285
 
7286
  The optional {dict} argument allows for further custom
7287
- values. Currently this is used to specify a match specific
7288
  conceal character that will be shown for |hl-Conceal|
7289
- highlighted matches. The dict can have the following members:
7290
 
7291
  conceal Special character to show instead of the
7292
  match (only for |hl-Conceal| highlighted
@@ -7318,9 +7330,9 @@ matchadd({group}, {pattern} [, {priority} [, {id} [, {dict}]]])
7318
  *matchaddpos()*
7319
  matchaddpos({group}, {pos} [, {priority} [, {id} [, {dict}]]])
7320
  Same as |matchadd()|, but requires a list of positions {pos}
7321
- instead of a pattern. This command is faster than |matchadd()|
7322
  because it does not handle regular expressions and it sets
7323
- buffer line boundaries to redraw screen. It is supposed to be
7324
  used when fast match additions and deletions are required, for
7325
  example to highlight matching parentheses.
7326
 
@@ -7328,14 +7340,14 @@ matchaddpos({group}, {pos} [, {priority} [, {id} [, {dict}]]])
7328
  these:
7329
  - A number. This whole line will be highlighted. The first
7330
  line has number 1.
7331
- - A list with one number, e.g., [23]. The whole line with this
7332
- number will be highlighted.
7333
- - A list with two numbers, e.g., [23, 11]. The first number is
7334
- the line number, the second one is the column number (first
7335
- column is 1, the value must correspond to the byte index as
7336
- |col()| would return). The character at this position will
7337
- be highlighted.
7338
- - A list with three numbers, e.g., [23, 11, 3]. As above, but
7339
  the third number gives the length of the highlight in bytes.
7340
 
7341
  Returns -1 on error.
@@ -7365,7 +7377,7 @@ matcharg({nr}) *matcharg()*
7365
  When there is no match item set returns ['', ''].
7366
  This is useful to save and restore a |:match|.
7367
  Highlighting matches using the |:match| commands are limited
7368
- to three matches. |matchadd()| does not have this limitation.
7369
 
7370
  Can also be used as a |method|: >
7371
  GetMatch()->matcharg()
@@ -7389,7 +7401,7 @@ matchbufline({buf}, {pat}, {lnum}, {end}, [, {dict}])
7389
  text matched string
7390
  Note that there can be multiple matches in a single line.
7391
 
7392
- This function works only for loaded buffers. First call
7393
  |bufload()| if needed.
7394
 
7395
  See |match-pattern| for information about the effect of some
@@ -7466,7 +7478,7 @@ matchend({expr}, {pat} [, {start} [, {count}]]) *matchend()*
7466
 
7467
  matchfuzzy({list}, {str} [, {dict}]) *matchfuzzy()*
7468
  If {list} is a list of strings, then returns a |List| with all
7469
- the strings in {list} that fuzzy match {str}. The strings in
7470
  the returned list are sorted based on the matching score.
7471
 
7472
  The optional {dict} argument always supports the following
@@ -7480,7 +7492,7 @@ matchfuzzy({list}, {str} [, {dict}]) *matchfuzzy()*
7480
  If {list} is a list of dictionaries, then the optional {dict}
7481
  argument supports the following additional items:
7482
  key Key of the item which is fuzzy matched against
7483
- {str}. The value of this item should be a
7484
  string.
7485
  text_cb |Funcref| that will be called for every item
7486
  in {list} to get the text for fuzzy matching.
@@ -7496,7 +7508,7 @@ matchfuzzy({list}, {str} [, {dict}]) *matchfuzzy()*
7496
  then the list of strings that have all the words is returned.
7497
 
7498
  If there are no matching strings or there is an error, then an
7499
- empty list is returned. If length of {str} is greater than
7500
  256, then returns an empty list.
7501
 
7502
  When {limit} is given, matchfuzzy() will find up to this
@@ -7659,7 +7671,7 @@ matchstrpos({expr}, {pat} [, {start} [, {count}]]) *matchstrpos()*
7659
 
7660
 
7661
  max({expr}) *max()*
7662
- Return the maximum value of all items in {expr}. Example: >
7663
  echo max([apples, pears, oranges])
7664
 
7665
  < {expr} can be a |List|, a |Tuple| or a |Dictionary|. For a
@@ -7677,8 +7689,8 @@ max({expr}) *max()*
7677
 
7678
  menu_info({name} [, {mode}]) *menu_info()*
7679
  Return information about the specified menu {name} in
7680
- mode {mode}. The menu name should be specified without the
7681
- shortcut character ('&'). If {name} is "", then the top-level
7682
  menu names are returned.
7683
 
7684
  {mode} can be one of these strings:
@@ -7702,7 +7714,7 @@ menu_info({name} [, {mode}]) *menu_info()*
7702
  icon name of the icon file (for toolbar)
7703
  |toolbar-icon|
7704
  iconidx index of a built-in icon
7705
- modes modes for which the menu is defined. In
7706
  addition to the modes mentioned above, these
7707
  characters will be used:
7708
  " " Normal, Visual and Operator-pending
@@ -7710,11 +7722,11 @@ menu_info({name} [, {mode}]) *menu_info()*
7710
  noremenu v:true if the {rhs} of the menu item is not
7711
  remappable else v:false.
7712
  priority menu order priority |menu-priority|
7713
- rhs right-hand-side of the menu item. The returned
7714
- string has special characters translated like
7715
- in the output of the ":menu" command listing.
7716
- When the {rhs} of a menu item is empty, then
7717
- "<Nop>" is returned.
7718
  script v:true if script-local remapping of {rhs} is
7719
  allowed else v:false. See |:menu-script|.
7720
  shortcut shortcut key (character after '&' in
@@ -7869,8 +7881,8 @@ mode([{expr}]) *mode()*
7869
  with |remote_expr()| In most other places it always returns
7870
  "c" or "n".
7871
  Note that in the future more modes and more specific modes may
7872
- be added. It's better not to compare the whole string but only
7873
- the leading character(s).
7874
  Also see |visualmode()|.
7875
 
7876
  Can also be used as a |method|: >
@@ -7923,7 +7935,7 @@ nextnonblank({lnum}) *nextnonblank()*
7923
  ngettext({single}, {plural}, {number}[, {domain}) *ngettext()*
7924
  Return a string that contains the correct value for a
7925
  message based on the rules for plural form(s) in
7926
- a language. Examples: >
7927
  ngettext("File", "Files", 2) # returns "Files"
7928
  <
7929
  Can be used as a |method|: >
@@ -7997,8 +8009,8 @@ pathshorten({path} [, {len}]) *pathshorten()*
7997
 
7998
  perleval({expr}) *perleval()*
7999
  Evaluate Perl expression {expr} in scalar context and return
8000
- its result converted to Vim data structures. If value can't be
8001
- converted, it is returned as a string Perl representation.
8002
  Note: If you want an array or hash, {expr} must return a
8003
  reference to it.
8004
  Example: >
@@ -8105,8 +8117,8 @@ printf({fmt}, {expr1} ...) *printf()*
8105
  % [pos-argument] [flags] [field-width] [.precision] type
8106
 
8107
  pos-argument
8108
- At most one positional argument specifier. These
8109
- take the form {n$}, where n is >= 1.
8110
 
8111
  flags
8112
  Zero or more of the following flags:
@@ -8182,7 +8194,7 @@ printf({fmt}, {expr1} ...) *printf()*
8182
  positional argument specifier, and a '*' is used to indicate
8183
  that a number argument is to be used to specify the width or
8184
  precision, the argument(s) to be used must also be specified
8185
- using a {n$} positional argument specifier. See |printf-$|.
8186
 
8187
  The conversion specifiers and their meanings are:
8188
 
@@ -8209,7 +8221,7 @@ printf({fmt}, {expr1} ...) *printf()*
8209
  The b and B conversion specifiers never take a width
8210
  modifier and always assume their argument is a 64 bit
8211
  integer.
8212
- Generally, these modifiers are not useful. They are
8213
  ignored when type is known from the argument.
8214
 
8215
  i alias for d
@@ -8281,9 +8293,9 @@ printf({fmt}, {expr1} ...) *printf()*
8281
  *printf-$*
8282
  In certain languages, error and informative messages are
8283
  more readable when the order of words is different from the
8284
- corresponding message in English. To accommodate translations
8285
  having a different word order, positional arguments may be
8286
- used to indicate this. For instance: >
8287
 
8288
  #, c-format
8289
  msgid "%s returning %s"
@@ -8302,9 +8314,9 @@ printf({fmt}, {expr1} ...) *printf()*
8302
  "Bram", "Moolenaar")
8303
  < In Belgium, vim's creator's name is: Moolenaar Bram
8304
 
8305
- Width (and precision) can be specified using the '*' specifier.
8306
- In this case, you must specify the field width position in the
8307
- argument list. >
8308
 
8309
  echo printf("%1$*2$.*3$d", 1, 2, 3)
8310
  < 001 >
@@ -8504,8 +8516,8 @@ py3eval({expr} [, {locals}]) *py3eval()*
8504
  Evaluate Python expression {expr} and return its result
8505
  converted to Vim data structures.
8506
  If a {locals} |Dictionary| is given, it defines set of local
8507
- variables available in the expression. The keys are variable
8508
- names and the values are the variable values. |Dictionary|,
8509
  |List| and |Tuple| values are referenced, and may be updated
8510
  by the expression (as if |python-bindeval| was used).
8511
  Numbers and strings are returned as they are (strings are
@@ -8655,8 +8667,8 @@ readdir({directory} [, {expr} [, {dict}]]) *readdir()*
8655
  readdir(dirname, {n -> n !~ '^\.\|\~$'})
8656
  < *E857*
8657
  The optional {dict} argument allows for further custom
8658
- values. Currently this is used to specify if and how sorting
8659
- should be performed. The dict can have the following members:
8660
 
8661
  sort How to sort the result returned from the system.
8662
  Valid values are:
@@ -8707,9 +8719,9 @@ readdirex({directory} [, {expr} [, {dict}]]) *readdirex()*
8707
  following items:
8708
  group Group name of the entry. (Only on Unix)
8709
  name Name of the entry.
8710
- perm Permissions of the entry. See |getfperm()|.
8711
- size Size of the entry. See |getfsize()|.
8712
- time Timestamp of the entry. See |getftime()|.
8713
  type Type of the entry.
8714
  On Unix, almost same as |getftype()| except:
8715
  Symlink to a dir "linkd"
@@ -8891,8 +8903,8 @@ reltimestr({time}) *reltimestr()*
8891
  call MyFunction()
8892
  echo reltimestr(reltime(start))
8893
  < Note that overhead for the commands will be added to the time.
8894
- The accuracy depends on the system. Use reltimefloat() for the
8895
- greatest accuracy which is nanoseconds on some systems.
8896
  Leading spaces are used to make the string align nicely. You
8897
  can use split() to remove it. >
8898
  echo split(reltimestr(reltime(start)))[0]
@@ -9132,7 +9144,7 @@ resolve({filename}) *resolve()* *E655*
9132
  On MS-Windows, when {filename} is a shortcut (a .lnk file),
9133
  returns the path the shortcut points to in a simplified form.
9134
  When {filename} is a symbolic link or junction point, return
9135
- the full path to the target. If the target of junction is
9136
  removed, return {filename}.
9137
  On Unix, repeat resolving symbolic links in all path
9138
  components of {filename} and return the simplified result.
@@ -9249,13 +9261,13 @@ screenchars({row}, {col}) *screenchars()*
9249
 
9250
  screencol() *screencol()*
9251
  The result is a Number, which is the current screen column of
9252
- the cursor. The leftmost column has number 1.
9253
  This function is mainly used for testing.
9254
 
9255
  Note: Always returns the current screen column, thus if used
9256
  in a command (e.g. ":echo screencol()") it will return the
9257
  column inside the command line, which is 1 when the command is
9258
- executed. To get the cursor position in the file use one of
9259
  the following mappings: >
9260
  nnoremap <expr> GG ":echom " .. screencol() .. "\n"
9261
  nnoremap <silent> GG :echom screencol()<CR>
@@ -9341,7 +9353,7 @@ search({pattern} [, {flags} [, {stopline} [, {timeout} [, {skip}]]]])
9341
  If neither 'w' or 'W' is given, the 'wrapscan' option applies.
9342
 
9343
  If the 's' flag is supplied, the ' mark is set, only if the
9344
- cursor is moved. The 's' flag cannot be combined with the 'n'
9345
  flag.
9346
 
9347
  'ignorecase', 'smartcase' and 'magic' are used.
@@ -9436,7 +9448,7 @@ searchcount([{options}]) *searchcount()*
9436
  without the "S" flag in 'shortmess'. This works even if
9437
  'shortmess' does contain the "S" flag.
9438
 
9439
- This returns a |Dictionary|. The dictionary is empty if the
9440
  previous pattern was not set and "pattern" was not specified.
9441
 
9442
  key type meaning ~
@@ -9453,10 +9465,10 @@ searchcount([{options}]) *searchcount()*
9453
  For {options} see further down.
9454
 
9455
  To get the last search count when |n| or |N| was pressed, call
9456
- this function with `recompute: 0` . This sometimes returns
9457
  wrong information because of 'maxsearchcount'.
9458
  If the count exceeded 'maxsearchcount', the result must be
9459
- 'maxsearchcount' + 1. If you want to get correct information,
9460
  specify `recompute: 1`: >
9461
 
9462
  " result == 'maxsearchcount' + 1 when many matches
@@ -9519,7 +9531,7 @@ searchcount([{options}]) *searchcount()*
9519
  " search again
9520
  call searchcount()
9521
  <
9522
- {options} must be a |Dictionary|. It can contain:
9523
  key type meaning ~
9524
  recompute |Boolean| if |TRUE|, recompute the count
9525
  like |n| or |N| was executed.
@@ -9677,7 +9689,7 @@ searchpair({start}, {middle}, {end} [, {flags} [, {skip}
9677
  searchpairpos({start}, {middle}, {end} [, {flags} [, {skip}
9678
  [, {stopline} [, {timeout}]]]])
9679
  Same as |searchpair()|, but returns a |List| with the line and
9680
- column position of the match. The first element of the |List|
9681
  is the line number and the second element is the byte index of
9682
  the column position of the match. If no match is found,
9683
  returns [0, 0]. >
@@ -9691,9 +9703,9 @@ searchpairpos({start}, {middle}, {end} [, {flags} [, {skip}
9691
  *searchpos()*
9692
  searchpos({pattern} [, {flags} [, {stopline} [, {timeout} [, {skip}]]]])
9693
  Same as |search()|, but returns a |List| with the line and
9694
- column position of the match. The first element of the |List|
9695
  is the line number and the second element is the byte index of
9696
- the column position of the match. If no match is found,
9697
  returns [0, 0].
9698
  Example: >
9699
  :let [lnum, col] = searchpos('mypattern', 'n')
@@ -9744,7 +9756,7 @@ setbufline({buf}, {lnum}, {text}) *setbufline()*
9744
  Set line {lnum} to {text} in buffer {buf}. This works like
9745
  |setline()| for the specified buffer.
9746
 
9747
- This function works only for loaded buffers. First call
9748
  |bufload()| if needed.
9749
 
9750
  To insert lines use |appendbufline()|.
@@ -9967,7 +9979,7 @@ setfperm({fname}, {mode}) *setfperm()* *chmod*
9967
 
9968
  setline({lnum}, {text}) *setline()*
9969
  Set line {lnum} of the current buffer to {text}. To insert
9970
- lines use |append()|. To set lines in another buffer use
9971
  |setbufline()|.
9972
  Any text properties in {lnum} are cleared. See
9973
  |text-prop-cleared|
@@ -9979,8 +9991,8 @@ setline({lnum}, {text}) *setline()*
9979
  converted to a String. When {text} is an empty List then
9980
  nothing is changed and FALSE is returned.
9981
 
9982
- If this succeeds, FALSE is returned. If this fails (most likely
9983
- because {lnum} is invalid) TRUE is returned.
9984
  In |Vim9| script an error is given if {lnum} is invalid.
9985
 
9986
  Example: >
@@ -10016,7 +10028,7 @@ setloclist({nr}, {list} [, {action} [, {what}]]) *setloclist()*
10016
  For {action} see |setqflist-action|.
10017
 
10018
  If the optional {what} dictionary argument is supplied, then
10019
- only the items listed in {what} are set. Refer to |setqflist()|
10020
  for the list of supported keys in {what}.
10021
 
10022
  Can also be used as a |method|, the base is passed as the
@@ -10060,10 +10072,10 @@ setpos({expr}, {list}) *setpos()*
10060
 
10061
  "lnum" and "col" are the position in the buffer. The first
10062
  column is 1. Use a zero "lnum" to delete a mark. If "col" is
10063
- smaller than 1 then 1 is used. To use the character count
10064
  instead of the byte count, use |setcharpos()|.
10065
 
10066
- The "off" number is only used when 'virtualedit' is set. Then
10067
  it is the offset in screen columns from the start of the
10068
  character. E.g., a position within a <Tab> or after the last
10069
  character.
@@ -10099,14 +10111,14 @@ setqflist({list} [, {action} [, {what}]]) *setqflist()*
10099
  Create or replace or add to the quickfix list.
10100
 
10101
  If the optional {what} dictionary argument is supplied, then
10102
- only the items listed in {what} are set. The first {list}
10103
  argument is ignored. See below for the supported items in
10104
  {what}.
10105
  *setqflist-what*
10106
- When {what} is not present, the items in {list} are used. Each
10107
- item must be a dictionary. Non-dictionary items in {list} are
10108
- ignored. Each dictionary item can contain the following
10109
- entries:
10110
 
10111
  bufnr buffer number; must be the number of a valid
10112
  buffer
@@ -10145,7 +10157,7 @@ setqflist({list} [, {action} [, {what}]]) *setqflist()*
10145
 
10146
  {action} values: *setqflist-action* *E927*
10147
  'a' The items from {list} are added to the existing
10148
- quickfix list. If there is no existing list, then a
10149
  new list is created.
10150
 
10151
  'r' The items from the current quickfix list are replaced
@@ -10159,23 +10171,23 @@ setqflist({list} [, {action} [, {what}]]) *setqflist()*
10159
  freed.
10160
 
10161
  If {action} is not present or is set to ' ', then a new list
10162
- is created. The new quickfix list is added after the current
10163
  quickfix list in the stack and all the following lists are
10164
- freed. To add a new quickfix list at the end of the stack,
10165
  set "nr" in {what} to "$".
10166
 
10167
  The following items can be specified in dictionary {what}:
10168
- context quickfix list context. See |quickfix-context|
10169
  efm errorformat to use when parsing text from
10170
- "lines". If this is not present, then the
10171
  'errorformat' option value is used.
10172
  See |quickfix-parse|
10173
  id quickfix list identifier |quickfix-ID|
10174
  idx index of the current entry in the quickfix
10175
- list specified by 'id' or 'nr'. If set to '$',
10176
- then the last entry in the list is set as the
10177
- current entry. See |quickfix-index|
10178
- items list of quickfix entries. Same as the {list}
10179
  argument.
10180
  lines use 'errorformat' to parse a list of lines and
10181
  add the resulting entries to the quickfix list
@@ -10190,11 +10202,11 @@ setqflist({list} [, {action} [, {what}]]) *setqflist()*
10190
  a function or a funcref or a lambda. Refer to
10191
  |quickfix-window-function| for an explanation
10192
  of how to write the function and an example.
10193
- title quickfix list title text. See |quickfix-title|
10194
  Unsupported keys in {what} are ignored.
10195
- If the "nr" item is not present, then the current quickfix list
10196
- is modified. When creating a new quickfix list, "nr" can be
10197
- set to a value one greater than the quickfix stack size.
10198
  When modifying a quickfix list, to guarantee that the correct
10199
  list is modified, "id" should be used instead of "nr" to
10200
  specify the list.
@@ -10239,14 +10251,14 @@ setreg({regname}, {value} [, {options}]) *setreg()*
10239
 
10240
  If {options} contains no register settings, then the default
10241
  is to use character mode unless {value} ends in a <NL> for
10242
- string {value} and linewise mode for list {value}. Blockwise
10243
  mode is never selected automatically.
10244
  Returns zero for success, non-zero for failure.
10245
 
10246
  *E883*
10247
  Note: you may not use |List| containing more than one item to
10248
- set search and expression registers. Lists containing no
10249
- items act like empty strings.
10250
 
10251
  Examples: >
10252
  :call setreg(v:register, @*)
@@ -10326,7 +10338,7 @@ settagstack({nr}, {dict} [, {action}]) *settagstack()*
10326
  {nr} can be the window number or the |window-ID|.
10327
 
10328
  For a list of supported items in {dict}, refer to
10329
- |gettagstack()|. "curidx" takes effect before changing the tag
10330
  stack.
10331
  *E962*
10332
  How the tag stack is modified depends on the {action}
@@ -10400,7 +10412,7 @@ shellescape({string} [, {special}]) *shellescape()*
10400
  replace all "'" with "'\''".
10401
 
10402
  The {special} argument adds additional escaping of keywords
10403
- used in Vim commands. When it is not omitted and a non-zero
10404
  number or a non-empty String (|non-zero-arg|), then special
10405
  items such as "!", "%", "#" and "<cword>" (as listed in
10406
  |expand()|) will be preceded by a backslash.
@@ -10416,8 +10428,8 @@ shellescape({string} [, {special}]) *shellescape()*
10416
  escaped a second time.
10417
 
10418
  The "\" character will be escaped when 'shell' contains "fish"
10419
- in the tail. That is because for fish "\" is used as an escape
10420
- character inside single quotes.
10421
 
10422
  Example of use with a |:!| command: >
10423
  :exe '!dir ' .. shellescape(expand('<cfile>'), 1)
@@ -10433,16 +10445,17 @@ shellescape({string} [, {special}]) *shellescape()*
10433
 
10434
 
10435
  shiftwidth([{col}]) *shiftwidth()*
10436
- Returns the effective value of 'shiftwidth'. This is the
10437
  'shiftwidth' value unless it is zero, in which case it is the
10438
  'tabstop' value. This function was introduced with patch
10439
  7.3.694 in 2012, everybody should have it by now (however it
10440
  did not allow for the optional {col} argument until 8.1.542).
10441
 
10442
  When there is one argument {col} this is used as column number
10443
- for which to return the 'shiftwidth' value. This matters for the
10444
- 'vartabstop' feature. If the 'vartabstop' setting is enabled and
10445
- no {col} argument is given, column 1 will be assumed.
 
10446
 
10447
  Can also be used as a |method|: >
10448
  GetColumn()->shiftwidth()
@@ -10458,7 +10471,7 @@ simplify({filename}) *simplify()*
10458
  Unix) are not resolved. If the first path component in
10459
  {filename} designates the current directory, this will be
10460
  valid for the result as well. A trailing path separator is
10461
- not removed either. On Unix "//path" is unchanged, but
10462
  "///path" is simplified to "/path" (this follows the Posix
10463
  standard).
10464
  Example: >
@@ -10540,11 +10553,11 @@ sort({list} [, {how} [, {dict}]]) *sort()* *E702*
10540
  can be used to ignore case. Zero means to not ignore case.
10541
 
10542
  When {how} is given and it is 'l' then the current collation
10543
- locale is used for ordering. Implementation details: strcoll()
10544
- is used to compare strings. See |:language| check or set the
10545
- collation locale. |v:collate| can also be used to check the
10546
- current locale. Sorting using the locale typically ignores
10547
- case. Example: >
10548
  " ö is sorted similarly to o with English locale.
10549
  :language collate en_US.UTF8
10550
  :echo sort(['n', 'o', 'O', 'ö', 'p', 'z'], 'l')
@@ -10563,11 +10576,11 @@ sort({list} [, {how} [, {dict}]]) *sort()* *E702*
10563
  sort a list of strings with numbers!
10564
 
10565
  When {how} is given and it is 'N' then all items will be
10566
- sorted numerical. This is like 'n' but a string containing
10567
  digits will be used as the number they represent.
10568
 
10569
  When {how} is given and it is 'f' then all items will be
10570
- sorted numerical. All values must be a Number or a Float.
10571
 
10572
  When {how} is a |Funcref| or a function name, this function
10573
  is called to compare items. The function is invoked with two
@@ -10579,7 +10592,7 @@ sort({list} [, {how} [, {dict}]]) *sort()* *E702*
10579
  used to set the local variable "self". |Dictionary-function|
10580
 
10581
  The sort is stable, items which compare equal (as number or as
10582
- string) will keep their relative position. E.g., when sorting
10583
  on numbers, text strings will sort next to each other, in the
10584
  same order as they were originally.
10585
 
@@ -10675,7 +10688,7 @@ sound_stop({id}) *sound_stop()*
10675
  package, otherwise sound may not stop.
10676
 
10677
  On MS-Windows, this does not work for event sound started by
10678
- `sound_playevent()`. To stop event sounds, use `sound_clear()`.
10679
 
10680
  Can also be used as a |method|: >
10681
  soundid->sound_stop()
@@ -10761,7 +10774,7 @@ split({string} [, {pattern} [, {keepempty}]]) *split()*
10761
  empty each white space separated sequence of characters
10762
  becomes an item.
10763
  Otherwise the string is split where {pattern} matches,
10764
- removing the matched characters. 'ignorecase' is not used
10765
  here, add \c to ignore case. |/\c|
10766
  When the first or last item is empty it is omitted, unless the
10767
  {keepempty} argument is given and it's non-zero.
@@ -10929,7 +10942,8 @@ str2list({string} [, {utf8}]) *str2list()*
10929
  str2list("ABC") returns [65, 66, 67]
10930
  < |list2str()| does the opposite.
10931
 
10932
- When {utf8} is omitted or zero, the current 'encoding' is used.
 
10933
  When {utf8} is TRUE, always treat the String as UTF-8
10934
  characters. With UTF-8 composing characters are handled
10935
  properly: >
@@ -11047,7 +11061,8 @@ strdisplaywidth({string} [, {col}]) *strdisplaywidth()*
11047
  matters for anything that's displayed differently, such as
11048
  'tabstop' and 'display'.
11049
  When {string} contains characters with East Asian Width Class
11050
- Ambiguous, this function's return value depends on 'ambiwidth'.
 
11051
  Returns zero on error.
11052
  Also see |strlen()|, |strwidth()| and |strchars()|.
11053
 
@@ -11305,7 +11320,8 @@ strwidth({string}) *strwidth()*
11305
  String {string} occupies. A Tab character is counted as one
11306
  cell, alternatively use |strdisplaywidth()|.
11307
  When {string} contains characters with East Asian Width Class
11308
- Ambiguous, this function's return value depends on 'ambiwidth'.
 
11309
  Returns zero on error.
11310
  Also see |strlen()|, |strdisplaywidth()| and |strchars()|.
11311
 
@@ -11378,7 +11394,7 @@ substitute({string}, {pat}, {sub}, {flags}) *substitute()*
11378
  < results in "TESTING".
11379
 
11380
  When {sub} starts with "\=", the remainder is interpreted as
11381
- an expression. See |sub-replace-expression|. Example: >
11382
  :echo substitute(s, '%\(\x\x\)',
11383
  \ '\=nr2char("0x" .. submatch(1))', 'g')
11384
 
@@ -11414,7 +11430,7 @@ swapfilelist() *swapfilelist()*
11414
 
11415
  swapinfo({fname}) *swapinfo()*
11416
  The result is a dictionary, which holds information about the
11417
- swapfile {fname}. The available fields are:
11418
  version Vim version
11419
  user user name
11420
  host host name
@@ -11543,14 +11559,14 @@ synconcealed({lnum}, {col}) *synconcealed()*
11543
  1. The first item in the list is 0 if the character at the
11544
  position {lnum} and {col} is not part of a concealable
11545
  region, 1 if it is. {lnum} is used like with |getline()|.
11546
- 2. The second item in the list is a string. If the first item
11547
  is 1, the second item contains the text which will be
11548
  displayed in place of the concealed text, depending on the
11549
  current setting of 'conceallevel' and 'listchars'.
11550
  3. The third and final item in the list is a number
11551
  representing the specific syntax region matched in the
11552
- line. When the character is not concealed the value is
11553
- zero. This allows detection of the beginning of a new
11554
  concealable region if there are two consecutive regions
11555
  with the same replacement character. For an example, if
11556
  the text is "123456" and both "23" and "45" are concealed
@@ -11660,10 +11676,10 @@ system({expr} [, {input}]) *system()* *E677*
11660
 
11661
  systemlist({expr} [, {input}]) *systemlist()*
11662
  Same as |system()|, but returns a |List| with lines (parts of
11663
- output separated by NL) with NULs transformed into NLs. Output
11664
- is the same as |readfile()| will output with {binary} argument
11665
- set to "b", except that there is no extra empty item when the
11666
- result ends in a NL.
11667
  Note that on MS-Windows you may get trailing CR characters.
11668
 
11669
  To see the difference between "echo hello" and "echo -n hello"
@@ -11681,7 +11697,7 @@ systemlist({expr} [, {input}]) *systemlist()*
11681
  tabpagebuflist([{arg}]) *tabpagebuflist()*
11682
  The result is a |List|, where each item is the number of the
11683
  buffer associated with each window in the current tab page.
11684
- {arg} specifies the number of the tab page to be used. When
11685
  omitted the current tab page is used.
11686
  When {arg} is invalid the number zero is returned.
11687
  To get a list of all buffers in all tabs use this: >
@@ -11744,7 +11760,7 @@ taglist({expr} [, {filename}]) *taglist()*
11744
  Returns a |List| of tags matching the regular expression {expr}.
11745
 
11746
  If {filename} is passed it is used to prioritize the results
11747
- in the same way that |:tselect| does. See |tag-priority|.
11748
  {filename} should be the full path of the file.
11749
 
11750
  Each list item is a dictionary with at least the following
@@ -11780,7 +11796,7 @@ taglist({expr} [, {filename}]) *taglist()*
11780
  search regular expression pattern.
11781
 
11782
  Refer to 'tags' for information about how the tags file is
11783
- located by Vim. Refer to |tags-file-format| for the format of
11784
  the tags file generated by the different ctags tools.
11785
 
11786
  Can also be used as a |method|: >
@@ -11933,7 +11949,7 @@ timer_pause({timer}, {paused}) *timer_pause()*
11933
  timer_start({time}, {callback} [, {options}])
11934
  Create a timer and return the timer ID.
11935
 
11936
- {time} is the waiting time in milliseconds. This is the
11937
  minimum time before invoking the callback. When the system is
11938
  busy or Vim is not waiting for input the time will be longer.
11939
  Zero can be used to execute the callback when Vim is back in
@@ -12311,8 +12327,9 @@ utf16idx({string}, {idx} [, {countcc} [, {charidx}]])
12311
  downwards to the beginning of that sequence.
12312
 
12313
  Returns -1 if the arguments are invalid or if there are less
12314
- than {idx} bytes in {string}. If there are exactly {idx} bytes
12315
- the length of the string in UTF-16 code units is returned.
 
12316
 
12317
  See |byteidx()| and |byteidxcomp()| for getting the byte index
12318
  from the UTF-16 index and |charidx()| for getting the
@@ -12351,7 +12368,7 @@ virtcol({expr} [, {list} [, {winid}]]) *virtcol()*
12351
  the character at that position. When there is a <Tab> at the
12352
  position, the returned Number will be the column at the end of
12353
  the <Tab>. For example, for a <Tab> in column 1, with 'ts'
12354
- set to 8, it returns 8. |conceal| is ignored.
12355
  For the byte position use |col()|.
12356
 
12357
  For the use of {expr} see |getpos()| and |col()|.
@@ -12413,7 +12430,7 @@ virtcol2col({winid}, {lnum}, {col}) *virtcol2col()*
12413
  byte in the character is returned.
12414
 
12415
  The {winid} argument can be the window number or the
12416
- |window-ID|. If this is zero, then the current window is used.
12417
 
12418
  Returns -1 if the window {winid} doesn't exist or the buffer
12419
  line {lnum} or virtual column {col} is invalid.
@@ -12451,7 +12468,7 @@ wildmenumode() *wildmenumode()*
12451
  Returns |TRUE| when the wildmenu is active and |FALSE|
12452
  otherwise. See 'wildmenu' and 'wildmode'.
12453
  This can be used in mappings to handle the 'wildcharm' option
12454
- gracefully. (Makes only sense with |mapmode-c| mappings).
12455
 
12456
  For example to make <c-j> work like <down> in wildmode, use: >
12457
  :cnoremap <expr> <C-j> wildmenumode() ? "\<Down>\<Tab>" : "\<c-j>"
@@ -12534,7 +12551,7 @@ win_getid([{win} [, {tab}]]) *win_getid()*
12534
 
12535
  win_gettype([{nr}]) *win_gettype()*
12536
  Return the type of the window:
12537
- "autocmd" autocommand window. Temporary window
12538
  used to execute autocommands.
12539
  "command" command-line window |cmdwin|
12540
  (empty) normal window
@@ -12592,14 +12609,14 @@ win_id2win({expr}) *win_id2win()*
12592
 
12593
  win_move_separator({nr}, {offset}) *win_move_separator()*
12594
  Move window {nr}'s vertical separator (i.e., the right border)
12595
- by {offset} columns, as if being dragged by the mouse. {nr}
12596
- can be a window number or |window-ID|. A positive {offset}
12597
- moves right and a negative {offset} moves left. Moving a
12598
  window's vertical separator will change the width of the
12599
  window and the width of other windows adjacent to the vertical
12600
- separator. The magnitude of movement may be smaller than
12601
  specified (e.g., as a consequence of maintaining
12602
- 'winminwidth'). Returns TRUE if the window can be found and
12603
  FALSE otherwise.
12604
  This will fail for the rightmost window and a full-width
12605
  window, since it has no separator on the right.
@@ -12613,14 +12630,14 @@ win_move_separator({nr}, {offset}) *win_move_separator()*
12613
 
12614
  win_move_statusline({nr}, {offset}) *win_move_statusline()*
12615
  Move window {nr}'s status line (i.e., the bottom border) by
12616
- {offset} rows, as if being dragged by the mouse. {nr} can be a
12617
- window number or |window-ID|. A positive {offset} moves down
12618
- and a negative {offset} moves up. Moving a window's status
12619
- line will change the height of the window and the height of
12620
- other windows adjacent to the status line. The magnitude of
12621
- movement may be smaller than specified (e.g., as a consequence
12622
- of maintaining 'winminheight'). Returns TRUE if the window can
12623
- be found and FALSE otherwise.
12624
  Only works for the current tab page.
12625
 
12626
  Can also be used as a |method|: >
@@ -12723,7 +12740,7 @@ winlayout([{tabnr}]) *winlayout()*
12723
  in a tabpage.
12724
 
12725
  Without {tabnr} use the current tabpage, otherwise the tabpage
12726
- with number {tabnr}. If the tabpage {tabnr} is not found,
12727
  returns an empty list.
12728
 
12729
  For a leaf window, it returns:
@@ -12818,14 +12835,15 @@ winrestview({dict}) *winrestview()*
12818
  Uses the |Dictionary| returned by |winsaveview()| to restore
12819
  the view of the current window.
12820
  Note: The {dict} does not have to contain all values, that are
12821
- returned by |winsaveview()|. If values are missing, those
12822
- settings won't be restored. So you can use: >
12823
  :call winrestview({'curswant': 4})
12824
  <
12825
  This will only set the curswant value (the column the cursor
12826
  wants to move on vertical movements) of the cursor to column 5
12827
  (yes, that is 5), while all other settings will remain the
12828
- same. This is useful, if you set the cursor position manually.
 
12829
 
12830
  If you have changed the values the result is unpredictable.
12831
  If the window size changed the result won't be the same.
@@ -12844,7 +12862,7 @@ winsaveview() *winsaveview()*
12844
  buffer and you want to go back to the original view.
12845
  This does not save fold information. Use the 'foldenable'
12846
  option to temporarily switch off folding, so that folds are
12847
- not opened when moving around. This may have side effects.
12848
  The return value includes:
12849
  lnum cursor line number
12850
  col cursor column (Note: the first column
@@ -13233,7 +13251,8 @@ xpm Compiled with pixmap support.
13233
  xpm_w32 Compiled with pixmap support for Win32. (Only for
13234
  backward compatibility. Use "xpm" instead.)
13235
  xsmp Compiled with X session management support.
13236
- xsmp_interact Compiled with interactive X session management support.
 
13237
  xterm_clipboard Compiled with support for xterm clipboard.
13238
  xterm_save Compiled with support for saving and restoring the
13239
  xterm screen.
 
1
+ *builtin.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
 
889
  appendbufline({buf}, {lnum}, {text}) *appendbufline()*
890
  Like |append()| but append the text in buffer {buf}.
891
 
892
+ This function works only for loaded buffers. First call
893
  |bufload()| if needed.
894
 
895
  For the use of {buf}, see |bufname()|.
 
903
  In |Vim9| script an error is given for an invalid {lnum}.
904
 
905
  If {buf} is not a valid buffer or {lnum} is not valid, an
906
+ error message is given. Example: >
907
  :let failed = appendbufline(13, 0, "# THE START")
908
  < However, when {text} is an empty list then no error is given
909
  for an invalid {lnum}, since {lnum} isn't actually used.
 
1036
  If this item is specified, then the "pattern"
1037
  item is ignored.
1038
  cmd Ex command to execute for this autocmd event
1039
+ event autocmd event name. Refer to |autocmd-events|.
1040
  This can be either a String with a single
1041
  event name or a List of event names.
1042
+ group autocmd group name. Refer to |autocmd-groups|.
1043
  If this group doesn't exist then it is
1044
  created. If not specified or empty, then the
1045
  default group is used.
1046
  nested boolean flag, set to v:true to add a nested
1047
  autocmd. Refer to |autocmd-nested|.
1048
  once boolean flag, set to v:true to add an autocmd
1049
+ which executes only once. Refer to
1050
  |autocmd-once|.
1051
+ pattern autocmd pattern string. Refer to
1052
  |autocmd-patterns|. If "bufnr" item is
1053
  present, then this item is ignored. This can
1054
  be a String with a single pattern or a List of
 
1057
  commands associated with the specified autocmd
1058
  event and group and add the {cmd}. This is
1059
  useful to avoid adding the same command
1060
+ multiple times for an autocmd event in a
1061
+ group.
1062
 
1063
  Returns v:true on success and v:false on failure.
1064
  Examples: >
 
1081
 
1082
  The {acmds} argument is a List where each item is a Dict with
1083
  the following optional items:
1084
+ bufnr buffer number to delete a buffer-local
1085
+ autocmd. If this item is specified, then the
1086
+ "pattern" item is ignored.
1087
  cmd Ex command for this autocmd event
1088
+ event autocmd event name. Refer to |autocmd-events|.
1089
  If '*' then all the autocmd events in this
1090
  group are deleted.
1091
+ group autocmd group name. Refer to |autocmd-groups|.
1092
  If not specified or empty, then the default
1093
  group is used.
1094
  nested set to v:true for a nested autocmd.
1095
  Refer to |autocmd-nested|.
1096
  once set to v:true for an autocmd which executes
1097
+ only once. Refer to |autocmd-once|.
1098
+ pattern autocmd pattern string. Refer to
1099
  |autocmd-patterns|. If "bufnr" item is
1100
  present, then this item is ignored.
1101
 
 
1129
 
1130
 
1131
  autocmd_get([{opts}]) *autocmd_get()*
1132
+ Returns a |List| of autocmds. If {opts} is not supplied, then
1133
  returns the autocmds for all the events in all the groups.
1134
 
1135
  The optional {opts} Dict argument supports the following
1136
  items:
1137
+ group Autocmd group name. If specified, returns
1138
+ only the autocmds defined in this group. If
1139
+ the specified group doesn't exist, results in
1140
+ an error message. If set to an empty string,
1141
  then the default autocmd group is used.
1142
+ event Autocmd event name. If specified, returns
1143
+ only the autocmds defined for this event. If
1144
+ set to "*", then returns autocmds for all the
1145
  events. If the specified event doesn't exist,
1146
  results in an error message.
1147
+ pattern Autocmd pattern. If specified, returns only
1148
  the autocmds defined for this pattern.
1149
  A combination of the above three times can be supplied in
1150
  {opts}.
 
1156
  event Autocmd event name.
1157
  group Autocmd group name.
1158
  nested Boolean flag, set to v:true for a nested
1159
+ autocmd. See |autocmd-nested|.
1160
  once Boolean flag, set to v:true, if the autocmd
1161
+ will be executed only once. See |autocmd-once|.
1162
  pattern Autocmd pattern. For a buffer-local
1163
+ autocmd, this will be of the form
1164
+ "<buffer=n>".
1165
  If there are multiple commands for an autocmd event in a
1166
  group, then separate items are returned for each command.
1167
 
 
1512
  {create} argument is present and TRUE, a new, unlisted,
1513
  buffer is created and its number is returned. Example: >
1514
  let newbuf = bufnr('Scratch001', 1)
1515
+ < Using an empty name uses the current buffer. To create a new
1516
  buffer with an empty name use |bufadd()|.
1517
 
1518
  bufnr("$") is the last buffer: >
 
1700
  Examples: >
1701
  char2nr(" ") returns 32
1702
  char2nr("ABC") returns 65
1703
+ < When {utf8} is omitted or zero, the current 'encoding' is
1704
+ used.
1705
  Example for "utf-8": >
1706
  char2nr("á") returns 225
1707
  char2nr("á"[0]) returns 195
 
1766
  index in the String {expr} instead of as the byte index.
1767
 
1768
  Returns -1 if the arguments are invalid or if there are less
1769
+ than {idx} bytes. If there are exactly {idx} bytes the length
1770
  of the string in characters is returned.
1771
 
1772
  An error is given and -1 is returned if the first argument is
 
1858
  completion began.
1859
  pum_visible |TRUE| if popup menu is visible.
1860
  See |pumvisible()|.
1861
+ matches List of all completion candidates. Each item
1862
  is a string.
1863
  selected Selected item index. First index is zero.
1864
  Index is -1 if no item is selected (showing
 
1880
  When {expr} is "$", it means the end of the cursor line, so
1881
  the result is the number of bytes in the cursor line plus one.
1882
  Additionally {expr} can be [lnum, col]: a |List| with the line
1883
+ and column number. Most useful when the column is "$", to get
1884
  the last column of a specific line. When "lnum" or "col" is
1885
  out of range then col() returns zero.
1886
 
 
1917
 
1918
 
1919
  complete({startcol}, {matches}) *complete()* *E785*
1920
+ Set the matches for Insert mode completion. Can only be
1921
  used in Insert mode. Typically invoked from a mapping with
1922
  CTRL-R = (see |i_CTRL-R|), but may also be called from a
1923
  |<Cmd>| or |<ScriptCmd>| mapping. It does not work after
 
2004
  See |complete_info_mode| for the values.
2005
  pum_visible |TRUE| if popup menu is visible.
2006
  See |pumvisible()|.
2007
+ items List of all completion candidates. Each item
2008
  is a dictionary containing the entries "word",
2009
+ "abbr", "menu", "kind", "info" and
2010
+ "user_data".
2011
  See |complete-items|.
2012
  matches Same as "items", but only returns items that
2013
+ are matching current query. If both "matches"
2014
  and "items" are in "what", the returned list
2015
  will still be named "items", but each item
2016
  will have an additional "match" field.
 
2049
  {what} are silently ignored.
2050
 
2051
  To get the position and size of the popup menu, see
2052
+ |pum_getpos()|. It's also available in |v:event| during the
2053
  |CompleteChanged| event.
2054
 
2055
  Returns an empty |Dictionary| on error.
 
2069
 
2070
  complete_match([{lnum}, {col}]) *complete_match()*
2071
  Searches backward from the given position and returns a List
2072
+ of matches according to the 'isexpand' option. When no
2073
  arguments are provided, uses the current cursor position.
2074
 
2075
  Each match is represented as a List containing
2076
  [startcol, trigger_text] where:
2077
  - startcol: column position where completion should start,
2078
+ or -1 if no trigger position is found. For multi-character
2079
  triggers, returns the column of the first character.
2080
  - trigger_text: the matching trigger string from 'isexpand',
2081
  or empty string if no match was found or when using the
 
2232
  When {ic} is given and it's |TRUE| then case is ignored.
2233
 
2234
  When {comp} is a string then the number of not overlapping
2235
+ occurrences of {expr} is returned. Zero is returned when
2236
  {expr} is an empty string.
2237
 
2238
  Can also be used as a |method|: >
 
2326
  debugbreak({pid}) *debugbreak()*
2327
  Specifically used to interrupt a program being debugged. It
2328
  will cause process {pid} to get a SIGTRAP. Behavior for other
2329
+ processes is undefined. See |terminal-debugger|.
2330
  {only available on MS-Windows}
2331
 
2332
  Returns |TRUE| if successfully interrupted the program.
 
2401
  If {last} is omitted then delete line {first} only.
2402
  On success 0 is returned, on failure 1 is returned.
2403
 
2404
+ This function works only for loaded buffers. First call
2405
  |bufload()| if needed.
2406
 
2407
  For the use of {buf}, see |bufname()| above.
2408
 
2409
+ {first} and {last} are used like with |getline()|. Note that
2410
+ when using |line()| this refers to the current buffer. Use "$"
2411
  to refer to the last line in buffer {buf}.
2412
 
2413
  Can also be used as a |method|: >
 
2644
 
2645
  echoraw({string}) *echoraw()*
2646
  Output {string} as-is, including unprintable characters.
2647
+ This can be used to output a terminal code. For example, to
2648
  disable modifyOtherKeys: >
2649
  call echoraw(&t_TE)
2650
  < and to enable it again: >
 
2677
 
2678
 
2679
  environ() *environ()*
2680
+ Return all of environment variables as dictionary. You can
2681
  check if an environment variable exists like this: >
2682
  :echo has_key(environ(), 'HOME')
2683
  < Note that the variable name may be CamelCase; to ignore case
 
3161
  {string}.
3162
 
3163
  To include special keys into {string}, use double-quotes
3164
+ and "\..." notation |expr-quote|. For example,
3165
+ feedkeys("\<CR>") simulates pressing of the <Enter> key. But
3166
  feedkeys('\<CR>') pushes 5 characters.
3167
  A special code that might be useful is <Ignore>, it exits the
3168
  wait for a character without doing anything. *<Ignore>*
3169
 
3170
  {mode} is a String, which can contain these character flags:
3171
+ 'm' Remap keys. This is default. If {mode} is absent,
3172
  keys are remapped.
3173
  'n' Do not remap keys.
3174
  't' Handle keys as if typed; otherwise they are handled as
3175
  if coming from a mapping. This matters for undo,
3176
  opening folds, etc.
3177
  'L' Lowlevel input. Only works for Unix or when using the
3178
+ GUI. Keys are used as if they were coming from the
3179
  terminal. Other flags are not used. *E980*
3180
  When a CTRL-C interrupts and 't' is included it sets
3181
  the internal "got_int" flag.
 
3195
  legacy script syntax applies, "s:var" does not work,
3196
  etc. Note that if the string being fed sets a script
3197
  context this still applies.
3198
+ '!' When used with 'x' will not end Insert mode. Can be
3199
  used in a test when a timer is set to exit Insert mode
3200
  a little later. Useful for testing CursorHoldI.
3201
 
 
3208
 
3209
 
3210
  filecopy({from}, {to}) *filecopy()*
3211
+ Copy the file pointed to by the name {from} to {to}. The
3212
  result is a Number, which is |TRUE| if the file was copied
3213
  successfully, and |FALSE| when it failed.
3214
  If a file with name {to} already exists, it will fail.
 
3269
  of the current item. For a |Dictionary| |v:key| has the key
3270
  of the current item and for a |List| |v:key| has the index of
3271
  the current item. For a |Blob| |v:key| has the index of the
3272
+ current byte. For a |String| |v:key| has the index of the
3273
  current character.
3274
  Examples: >
3275
  call filter(mylist, 'v:val !~ "OLD"')
 
3311
  or a new |Blob| or |String|.
3312
  When an error is encountered while evaluating {expr2} no
3313
  further items in {expr1} are processed.
3314
+ When {expr2} is a Funcref errors inside a function are
3315
+ ignored, unless it was defined with the "abort" flag.
3316
 
3317
  Can also be used as a |method|: >
3318
  mylist->filter(expr2)
 
3592
  foreach({expr1}, {expr2}) *foreach()* *E1525*
3593
  {expr1} must be a |List|, |Tuple|, |String|, |Blob| or
3594
  |Dictionary|.
3595
+ For each item in {expr1} execute {expr2}. {expr1} is not
3596
  modified; its values may be, as with |:lockvar| 1. |E741|
3597
  See |map()| and |filter()| to modify {expr1}.
3598
 
 
3602
  of the current item. For a |Dictionary| |v:key| has the key
3603
  of the current item and for a |List| or a |Tuple| |v:key| has
3604
  the index of the current item. For a |Blob| |v:key| has the
3605
+ index of the current byte. For a |String| |v:key| has the
3606
  index of the current character.
3607
  Examples: >
3608
  call foreach(mylist, 'used[v:val] = true')
 
3623
  Returns {expr1} in all cases.
3624
  When an error is encountered while executing {expr2} no
3625
  further items in {expr1} are processed.
3626
+ When {expr2} is a Funcref errors inside a function are
3627
+ ignored, unless it was defined with the "abort" flag.
3628
 
3629
  Can also be used as a |method|: >
3630
  mylist->foreach(expr2)
 
3676
  It only works for an autoloaded function if it has already
3677
  been loaded (to avoid mistakenly loading the autoload script
3678
  when only intending to use the function name, use |function()|
3679
+ instead). {name} cannot be a builtin function.
3680
  Returns 0 on error.
3681
 
3682
  Can also be used as a |method|: >
 
3692
 
3693
  {name} can also be a Funcref or a partial. When it is a
3694
  partial the dict stored in it will be used and the {dict}
3695
+ argument is not allowed. E.g.: >
3696
  let FuncWithArg = function(dict.Func, [arg])
3697
  let Broken = function(dict.Func, [arg], dict)
3698
  <
 
3701
  same function.
3702
 
3703
  When {arglist} or {dict} is present this creates a partial.
3704
+ That means the argument list and/or the dictionary is stored
3705
+ in the Funcref and will be used when the Funcref is called.
3706
 
3707
  The arguments are passed to the function in front of other
3708
  arguments, but after any argument from |method|. Example: >
 
3736
  call Callback('one', 'two', 'name')
3737
 
3738
  < The Dictionary is only useful when calling a "dict" function.
3739
+ In that case the {dict} is passed in as "self". Example: >
3740
  function Callback() dict
3741
  echo "called for " .. self.name
3742
  endfunction
 
4008
  Returns a |List| of terminal cell pixel size.
4009
  List format is [xpixel, ypixel].
4010
 
4011
+ Only works on Unix (terminal and gVim) and Windows (gVim
4012
+ only).
4013
  Returns [] on other systems or on failure.
4014
+ Note that there could be variations across different
4015
+ terminals.
4016
  On macOS, system Terminal.app returns sizes in points (before
4017
+ Retina scaling), whereas third-party terminals return raw
4018
+ pixel sizes (post Retina scaling).
4019
 
4020
  Return type: list<any>
4021
 
 
4030
 
4031
 
4032
  getchangelist([{buf}]) *getchangelist()*
4033
+ Returns the |changelist| for the buffer {buf}. For the use
4034
+ of {buf}, see |bufname()| above. If buffer {buf} doesn't
4035
  exist, an empty list is returned.
4036
 
4037
  The returned list contains two entries: a list with the change
 
4042
  coladd column offset for 'virtualedit'
4043
  lnum line number
4044
  If buffer {buf} is the current buffer, then the current
4045
+ position refers to the position in the list. For other
4046
  buffers, it is set to the length of the list.
4047
 
4048
  Can also be used as a |method|: >
 
4149
  :endfunction
4150
  <
4151
  You may also receive synthetic characters, such as
4152
+ |<CursorHold>|. Often you will want to ignore this and get
4153
  another character: >
4154
  :function GetKey()
4155
  : let c = getchar()
 
4182
 
4183
 
4184
  getcharpos({expr}) *getcharpos()*
4185
+ Get the position for String {expr}. Same as |getpos()| but the
4186
  column number in the returned List is a character index
4187
  instead of a byte index.
4188
  If |getpos()| returns a very large column number, equal to
 
4306
 
4307
 
4308
  getcmdtype() *getcmdtype()*
4309
+ Return the current command-line type. Possible return values
4310
  are:
4311
  : normal Ex command
4312
  > debug mode command |debug-mode|
 
4324
 
4325
 
4326
  getcmdwintype() *getcmdwintype()*
4327
+ Return the current |command-line-window| type. Possible return
4328
+ values are the same as |getcmdtype()|. Returns an empty string
4329
  when not in the command-line window.
4330
 
4331
  Return type: |String|
4332
 
4333
 
4334
  getcompletion({pat}, {type} [, {filtered}]) *getcompletion()*
4335
+ Return a list of command-line completion matches. The String
4336
  {type} argument specifies what for. The following completion
4337
  types are supported:
4338
 
 
4389
 
4390
  If the optional {filtered} flag is set to 1, then 'wildignore'
4391
  is applied to filter the results. Otherwise all the matches
4392
+ are returned. The 'wildignorecase' option always applies.
4393
 
4394
  If the 'wildoptions' option contains 'fuzzy', then fuzzy
4395
+ matching is used to get the completion matches. Otherwise
4396
  regular expression matching is used. Thus this function
4397
  follows the user preference, what happens on the command line.
4398
  If you do not want this you can make 'wildoptions' empty
 
4429
  cursor vertically. After |$| command it will be a very large
4430
  number equal to |v:maxcol|. Also see |getcursorcharpos()| and
4431
  |getpos()|.
4432
+ The first "bufnum" item is always zero. The byte position of
4433
+ the cursor is returned in 'col'. To get the character
4434
  position, use |getcursorcharpos()|.
4435
 
4436
  The optional {winid} argument can specify the window. It can
 
4478
  directory. See also |haslocaldir()|.
4479
 
4480
  With {winnr} and {tabnr} return the local current directory of
4481
+ the window in the specified tab page. If {winnr} is -1 return
4482
  the working directory of the tabpage.
4483
  If {winnr} is zero use the current window, if {tabnr} is zero
4484
  use the current tabpage.
 
4685
 
4686
  For a location list window, the displayed location list is
4687
  returned. For an invalid window number {nr}, an empty list is
4688
+ returned. Otherwise, same as |getqflist()|.
4689
 
4690
  If the optional {what} dictionary argument is supplied, then
4691
+ returns the items listed in {what} as a dictionary. Refer to
4692
  |getqflist()| for the supported items in {what}.
4693
 
4694
  In addition to the items supported by |getqflist()| in {what},
4695
  the following item is supported by |getloclist()|:
4696
 
4697
  filewinid id of the window used to display files
4698
+ from the location list. This field is
4699
  applicable only when called from a
4700
+ location list window. See
4701
  |location-list-file-window| for more
4702
  details.
4703
 
 
4858
 
4859
  For getting the cursor position see |getcurpos()|.
4860
  The column number in the returned List is the byte position
4861
+ within the line. To get the character position in the line,
4862
  use |getcharpos()|.
4863
 
4864
  Note that for '< and '> Visual mode matters: when it is "V"
 
4904
  any type.
4905
 
4906
  When there is no error list or it's empty, an empty list is
4907
+ returned. Quickfix list entries with a non-existing buffer
4908
  number are returned with "bufnr" set to zero (Note: some
4909
  functions accept buffer number zero for the alternate buffer,
4910
  you may need to explicitly check for zero).
 
4917
  :endfor
4918
  <
4919
  If the optional {what} dictionary argument is supplied, then
4920
+ returns only the items listed in {what} as a dictionary. The
4921
  following string items are supported in {what}:
4922
  changedtick get the total number of changes made
4923
  to the list |quickfix-changedtick|
4924
  context get the |quickfix-context|
4925
+ efm errorformat to use when parsing "lines". If
4926
  not present, then the 'errorformat' option
4927
  value is used.
4928
  id get information for the quickfix list with
 
4936
  lines parse a list of lines using 'efm' and return
4937
  the resulting entries. Only a |List| type is
4938
  accepted. The current quickfix list is not
4939
+ modified. See |quickfix-parse|.
4940
  nr get information for this quickfix list; zero
4941
  means the current quickfix list and "$" means
4942
  the last quickfix list
4943
  qfbufnr number of the buffer displayed in the quickfix
4944
+ window. Returns 0 if the quickfix buffer is
4945
+ not present. See |quickfix-buffer|.
4946
  size number of entries in the quickfix list
4947
  title get the list title |quickfix-title|
4948
  winid get the quickfix |window-ID|
4949
  all all of the above quickfix properties
4950
+ Non-string items in {what} are ignored. To get the value of a
4951
  particular item, set it to zero.
4952
  If "nr" is not present then the current quickfix list is used.
4953
  If both "nr" and a non-zero "id" are specified, then the list
4954
  specified by "id" is used.
4955
  To get the number of lists in the quickfix stack, set "nr" to
4956
+ "$" in {what}. The "nr" value in the returned dictionary
4957
  contains the quickfix stack size.
4958
  When "lines" is specified, all the other items except "efm"
4959
  are ignored. The returned dictionary contains the entry
 
4962
  The returned dictionary contains the following entries:
4963
  changedtick total number of changes made to the
4964
  list |quickfix-changedtick|
4965
+ context quickfix list context. See |quickfix-context|
4966
  If not present, set to "".
4967
+ id quickfix list ID |quickfix-ID|. If not
4968
  present, set to 0.
4969
+ idx index of the quickfix entry in the list. If
4970
+ not present, set to 0.
4971
+ items quickfix list entries. If not present, set to
4972
  an empty list.
4973
+ nr quickfix list number. If not present, set to
4974
+ 0
4975
  qfbufnr number of the buffer displayed in the quickfix
4976
+ window. If not present, set to 0.
4977
+ size number of entries in the quickfix list. If
4978
+ not present, set to 0.
4979
+ title quickfix list title text. If not present, set
4980
  to "".
4981
+ winid quickfix |window-ID|. If not present, set to 0
4982
 
4983
  Examples (See also |getqflist-examples|): >
4984
  :echo getqflist({'all': 1})
 
5003
  argument is ignored, thus you can always give it.
5004
 
5005
  If {list} is present and |TRUE|, the result type is changed
5006
+ to |List|. Each list item is one text line. Use it if you care
5007
  about zero bytes possibly present inside register: without
5008
  third argument both NLs and zero bytes are represented as NLs
5009
  (see |NL-used-for-Nul|).
 
5177
 
5178
  The optional Dict argument {opts} supports the following
5179
  optional items:
5180
+ name Script name match pattern. If specified,
5181
  and "sid" is not specified, information about
5182
  scripts with a name that match the pattern
5183
  "name" are returned.
 
5231
 
5232
  gettabinfo([{tabnr}]) *gettabinfo()*
5233
  If {tabnr} is not specified, then information about all the
5234
+ tab pages is returned as a |List|. Each List item is a
5235
  |Dictionary|. Otherwise, {tabnr} specifies the tab page
5236
  number and information about that one is returned. If the tab
5237
  page does not exist an empty List is returned.
 
5297
 
5298
 
5299
  gettagstack([{winnr}]) *gettagstack()*
5300
+ The result is a Dict, which is the tag stack of window
5301
+ {winnr}.
5302
  {winnr} can be the window number or the |window-ID|.
5303
  When {winnr} is not specified, the current window is used.
5304
  When window {winnr} doesn't exist, an empty Dict is returned.
5305
 
5306
  The returned dictionary contains the following entries:
5307
+ curidx Current index in the stack. When at
5308
  top of the stack, set to (length + 1).
5309
  Index of bottom of the stack is 1.
5310
+ items List of items in the stack. Each item
5311
  is a dictionary containing the
5312
  entries described below.
5313
  length Number of entries in the stack.
 
5318
  from cursor position before the tag jump.
5319
  See |getpos()| for the format of the
5320
  returned list.
5321
+ matchnr current matching tag number. Used
5322
+ when multiple matching tags are found
5323
+ for a name.
5324
  tagname name of the tag
5325
 
5326
  See |tagstack| for more information about the tag stack.
 
5425
 
5426
  getwinposx() *getwinposx()*
5427
  The result is a Number, which is the X coordinate in pixels of
5428
+ the left hand side of the GUI Vim window. Also works for an
5429
  xterm (uses a timeout of 100 msec).
5430
  The result will be -1 if the information is not available
5431
  (e.g. on the Wayland backend).
 
5468
  'wildignorecase' always applies.
5469
 
5470
  When {list} is present and it is |TRUE| the result is a |List|
5471
+ with all matching files. The advantage of using a List is,
5472
  you also get filenames containing newlines correctly.
5473
  Otherwise the result is a String and when there are several
5474
  matches, they are separated by <NL> characters.
 
5538
  'suffixes' affect the ordering of matches.
5539
 
5540
  When {list} is present and it is |TRUE| the result is a |List|
5541
+ with all matching files. The advantage of using a List is,
5542
+ you also get filenames containing newlines correctly.
5543
+ Otherwise the result is a String and when there are several
5544
+ matches, they are separated by <NL> characters. Example: >
5545
  :echo globpath(&rtp, "syntax/c.vim", 0, 1)
5546
  <
5547
  {alllinks} is used as with |glob()|.
 
5812
  cleared boolean flag, set to v:true if the highlight
5813
  group attributes are cleared or not yet
5814
  specified. See |highlight-clear|.
5815
+ cterm cterm attributes. See |highlight-cterm|.
5816
  ctermbg cterm background color.
5817
  See |highlight-ctermbg|.
5818
  ctermfg cterm foreground color.
5819
  See |highlight-ctermfg|.
5820
  ctermul cterm underline color. See |highlight-ctermul|.
5821
  default boolean flag, set to v:true if the highlight
5822
+ group link is a default link. See
5823
  |highlight-default|.
5824
  font highlight group font. See |highlight-font|.
5825
+ gui gui attributes. See |highlight-gui|.
5826
  guibg gui background color. See |highlight-guibg|.
5827
  guifg gui foreground color. See |highlight-guifg|.
5828
  guisp gui special color. See |highlight-guisp|.
5829
  id highlight group ID.
5830
  linksto linked highlight group name.
5831
  See |:highlight-link|.
5832
+ name highlight group name. See |group-name|.
5833
  start start terminal keycode. See |highlight-start|.
5834
  stop stop terminal keycode. See |highlight-stop|.
5835
  term term attributes. See |highlight-term|.
 
5853
  hlset({list}) *hlset()*
5854
  Creates or modifies the attributes of a List of highlight
5855
  groups. Each item in {list} is a dictionary containing the
5856
+ attributes of a highlight group. See |hlget()| for the list of
5857
  supported items in this dictionary.
5858
 
5859
  In addition to the items described in |hlget()|, the following
 
5955
 
5956
  id({item}) *id()*
5957
  The result is a unique String associated with the {item} and
5958
+ not with the {item}'s contents. It is only valid while the
5959
+ {item} exists and is referenced. It is valid only in the
5960
+ instance of vim that produces the result. The whole idea is
5961
  that `id({item})` does not change if the contents of {item}
5962
+ changes. This is useful as a `key` for creating an identity
5963
  dictionary, rather than one based on equals.
5964
 
5965
  This operation does not reference {item} and there is no
5966
+ function to convert the `id` to the {item}. It may be useful to
5967
+ have a map of `id` to {item}. The following >
5968
  var referenceMap: dict<any>
5969
  var id = item->id()
5970
  referenceMap[id] = item
 
5972
  way to get the {item} from the `id`.
5973
 
5974
  {item} may be a List, Tuple, Dictionary, Object, Job, Channel
5975
+ or Blob. If the item is not a permitted type, or it is a null
5976
  value, then an empty String is returned.
5977
 
5978
  Can also be used as a |method|: >
 
6168
  Restore typeahead that was saved with a previous |inputsave()|.
6169
  Should be called the same number of times inputsave() is
6170
  called. Calling it more often is harmless though.
6171
+ Returns TRUE when there is nothing to restore, FALSE
6172
+ otherwise.
6173
 
6174
  Return type: |Number|
6175
 
 
6268
  isabsolutepath({path}) *isabsolutepath()*
6269
  The result is a Number, which is |TRUE| when {path} is an
6270
  absolute path.
6271
+ On Unix, a path is considered absolute when it starts with
6272
+ '/'.
6273
+ On MS-Windows, it is considered absolute when it starts with
6274
+ an optional drive prefix and is followed by a '\' or '/'. UNC
6275
+ paths are always absolute.
6276
  Example: >
6277
  echo isabsolutepath('/usr/share/') " 1
6278
  echo isabsolutepath('./foobar') " 0
 
6418
  [1,,{one:1},,] ~
6419
  While json_encode() would produce:
6420
  [1,null,{"one":1},null] ~
6421
+ This encoding is valid for JavaScript. It is more efficient
6422
  than JSON, especially when using an array with optional items.
6423
 
6424
  Can also be used as a |method|: >
 
6437
  - Integer keys are accepted in objects, e.g. {1:2} is the
6438
  same as {"1":2}.
6439
  - More floating point numbers are recognized, e.g. "1." for
6440
+ "1.0", or "001.2" for "1.2". Special floating point values
6441
  "Infinity", "-Infinity" and "NaN" (capitalization ignored)
6442
  are accepted.
6443
  - Leading zeroes in integer numbers are ignored, e.g. "012"
 
6700
  join(map(list, {nr, val -> nr2char(val)}), '')
6701
  < |str2list()| does the opposite.
6702
 
6703
+ When {utf8} is omitted or zero, the current 'encoding' is
6704
+ used.
6705
  When {utf8} is TRUE, always return UTF-8 characters.
6706
  With UTF-8 composing characters work as expected: >
6707
  list2str([97, 769]) returns "á"
 
6736
  listener_add({callback} [, {buf} [, {unbuffered}]]) *listener_add()*
6737
  Add a callback function that will be invoked when changes have
6738
  been made to buffer {buf}.
6739
+ {buf} refers to a buffer name or number. For the accepted
6740
  values, see |bufname()|. When {buf} is omitted the current
6741
  buffer is used.
6742
  Returns a unique ID that can be passed to |listener_remove()|.
 
6802
 
6803
  Because of the third trigger reason for triggering a callback
6804
  listed above, the line numbers passed to the callback are not
6805
+ guaranteed to be valid. If this is a problem then make
6806
  {unbuffered} |TRUE|.
6807
 
6808
  When {unbuffered} is |TRUE| the {callback} is invoked for every
6809
+ single change. The changes list only holds a single
6810
+ dictionary and the "start", "end" and "added" values in the
6811
+ dictionary are the same as the corresponding callback
6812
+ arguments. The line numbers are valid when the callback is
6813
+ invoked, but later changes may make them invalid, thus keeping
6814
+ a copy for later might not work.
6815
 
6816
  The {callback} is invoked with the text locked, see
6817
  |textlock|. If you do need to make changes to the buffer, use
 
6838
  Invoke listener callbacks for buffer {buf}. If there are no
6839
  pending changes then no callbacks are invoked.
6840
 
6841
+ {buf} refers to a buffer name or number. For the accepted
6842
  values, see |bufname()|. When {buf} is omitted the current
6843
  buffer is used.
6844
 
 
6901
 
6902
  luaeval({expr} [, {expr}]) *luaeval()*
6903
  Evaluate Lua expression {expr} and return its result converted
6904
+ to Vim data structures. Second {expr} may hold additional
6905
  argument accessible as _A inside first {expr}.
6906
  Strings are returned as they are.
6907
  Boolean objects are converted to numbers.
 
6938
  of the current item. For a |Dictionary| |v:key| has the key
6939
  of the current item and for a |List| |v:key| has the index of
6940
  the current item. For a |Blob| |v:key| has the index of the
6941
+ current byte. For a |String| |v:key| has the index of the
6942
  current character.
6943
  Example: >
6944
  :call map(mylist, '"> " .. v:val .. " <"')
 
6956
  accepts one argument, but with a Vim9 lambda you get "E1106:
6957
  One argument too many", the number of arguments must match.
6958
 
6959
+ The function must return the new value of the item. Example
6960
  that changes each value by "key-value": >
6961
  func KeyValue(key, val)
6962
  return a:key .. '-' .. a:val
 
6977
  or a new |Blob| or |String|.
6978
  When an error is encountered while evaluating {expr2} no
6979
  further items in {expr1} are processed.
6980
+ When {expr2} is a Funcref errors inside a function are
6981
+ ignored, unless it was defined with the "abort" flag.
6982
 
6983
  Can also be used as a |method|: >
6984
  mylist->map(expr2)
 
6991
  When {dict} is omitted or zero: Return the rhs of mapping
6992
  {name} in mode {mode}. The returned String has special
6993
  characters translated like in the output of the ":map" command
6994
+ listing. When {dict} is TRUE a dictionary is returned, see
6995
+ below. To get a list of all mappings see |maplist()|.
6996
 
6997
  When there is no mapping for {name}, an empty String is
6998
  returned if {dict} is FALSE, otherwise returns an empty Dict.
 
7031
  "script" 1 if mapping was defined with <script>.
7032
  "expr" 1 for an expression mapping (|:map-<expr>|).
7033
  "buffer" 1 for a buffer local mapping (|:map-local|).
7034
+ "mode" Modes for which the mapping is defined. In
7035
  addition to the modes mentioned above, these
7036
  characters will be used:
7037
  " " Normal, Visual and Operator-pending
 
7047
  "abbr" True if this is an abbreviation |abbreviations|.
7048
  "mode_bits" Vim's internal binary representation of "mode".
7049
  |mapset()| ignores this; only "mode" is used.
7050
+ See |maplist()| for usage examples. The values
7051
  are from src/vim.h and may change in the future.
7052
 
7053
  The dictionary can be used to restore a mapping with
 
7115
  echo maplist()->filter(
7116
  (_, m) => match(m.rhs, 'MultiMatch') >= 0)
7117
  < It can be tricky to find mappings for particular |:map-modes|.
7118
+ |mapping-dict|'s "mode_bits" can simplify this. For example,
7119
  the mode_bits for Normal, Insert or Command-line modes are
7120
+ 0x19. To find all the mappings available in those modes you
7121
  can do: >
7122
  vim9script
7123
  var saved_maps = []
 
7129
  echo saved_maps->mapnew((_, m) => m.lhs)
7130
  < The values of the mode_bits are defined in Vim's src/vim.h
7131
  file and they can be discovered at runtime using
7132
+ |:map-commands| and "maplist()". Example: >
7133
  vim9script
7134
  omap xyzzy <Nop>
7135
  var op_bit = maplist()->filter(
 
7155
  Restore a mapping from a dictionary, possibly returned by
7156
  |maparg()| or |maplist()|. A buffer mapping, when dict.buffer
7157
  is true, is set on the current buffer; it is up to the caller
7158
+ to ensure that the intended buffer is the current buffer.
7159
+ This feature allows copying mappings from one buffer to
7160
+ another.
7161
  The dict.mode value may restore a single mapping that covers
7162
  more than one mode, like with mode values of '!', ' ', 'nox',
7163
  or 'v'. *E1276*
 
7296
  automatically chooses a free ID, which is at least 1000.
7297
 
7298
  The optional {dict} argument allows for further custom
7299
+ values. Currently this is used to specify a match specific
7300
  conceal character that will be shown for |hl-Conceal|
7301
+ highlighted matches. The dict can have the following members:
7302
 
7303
  conceal Special character to show instead of the
7304
  match (only for |hl-Conceal| highlighted
 
7330
  *matchaddpos()*
7331
  matchaddpos({group}, {pos} [, {priority} [, {id} [, {dict}]]])
7332
  Same as |matchadd()|, but requires a list of positions {pos}
7333
+ instead of a pattern. This command is faster than |matchadd()|
7334
  because it does not handle regular expressions and it sets
7335
+ buffer line boundaries to redraw screen. It is supposed to be
7336
  used when fast match additions and deletions are required, for
7337
  example to highlight matching parentheses.
7338
 
 
7340
  these:
7341
  - A number. This whole line will be highlighted. The first
7342
  line has number 1.
7343
+ - A list with one number, e.g., [23]. The whole line with
7344
+ this number will be highlighted.
7345
+ - A list with two numbers, e.g., [23, 11]. The first number
7346
+ is the line number, the second one is the column number
7347
+ (first column is 1, the value must correspond to the byte
7348
+ index as |col()| would return). The character at this
7349
+ position will be highlighted.
7350
+ - A list with three numbers, e.g., [23, 11, 3]. As above, but
7351
  the third number gives the length of the highlight in bytes.
7352
 
7353
  Returns -1 on error.
 
7377
  When there is no match item set returns ['', ''].
7378
  This is useful to save and restore a |:match|.
7379
  Highlighting matches using the |:match| commands are limited
7380
+ to three matches. |matchadd()| does not have this limitation.
7381
 
7382
  Can also be used as a |method|: >
7383
  GetMatch()->matcharg()
 
7401
  text matched string
7402
  Note that there can be multiple matches in a single line.
7403
 
7404
+ This function works only for loaded buffers. First call
7405
  |bufload()| if needed.
7406
 
7407
  See |match-pattern| for information about the effect of some
 
7478
 
7479
  matchfuzzy({list}, {str} [, {dict}]) *matchfuzzy()*
7480
  If {list} is a list of strings, then returns a |List| with all
7481
+ the strings in {list} that fuzzy match {str}. The strings in
7482
  the returned list are sorted based on the matching score.
7483
 
7484
  The optional {dict} argument always supports the following
 
7492
  If {list} is a list of dictionaries, then the optional {dict}
7493
  argument supports the following additional items:
7494
  key Key of the item which is fuzzy matched against
7495
+ {str}. The value of this item should be a
7496
  string.
7497
  text_cb |Funcref| that will be called for every item
7498
  in {list} to get the text for fuzzy matching.
 
7508
  then the list of strings that have all the words is returned.
7509
 
7510
  If there are no matching strings or there is an error, then an
7511
+ empty list is returned. If length of {str} is greater than
7512
  256, then returns an empty list.
7513
 
7514
  When {limit} is given, matchfuzzy() will find up to this
 
7671
 
7672
 
7673
  max({expr}) *max()*
7674
+ Return the maximum value of all items in {expr}. Example: >
7675
  echo max([apples, pears, oranges])
7676
 
7677
  < {expr} can be a |List|, a |Tuple| or a |Dictionary|. For a
 
7689
 
7690
  menu_info({name} [, {mode}]) *menu_info()*
7691
  Return information about the specified menu {name} in
7692
+ mode {mode}. The menu name should be specified without the
7693
+ shortcut character ('&'). If {name} is "", then the top-level
7694
  menu names are returned.
7695
 
7696
  {mode} can be one of these strings:
 
7714
  icon name of the icon file (for toolbar)
7715
  |toolbar-icon|
7716
  iconidx index of a built-in icon
7717
+ modes modes for which the menu is defined. In
7718
  addition to the modes mentioned above, these
7719
  characters will be used:
7720
  " " Normal, Visual and Operator-pending
 
7722
  noremenu v:true if the {rhs} of the menu item is not
7723
  remappable else v:false.
7724
  priority menu order priority |menu-priority|
7725
+ rhs right-hand-side of the menu item. The
7726
+ returned string has special characters
7727
+ translated like in the output of the ":menu"
7728
+ command listing. When the {rhs} of a menu
7729
+ item is empty, then "<Nop>" is returned.
7730
  script v:true if script-local remapping of {rhs} is
7731
  allowed else v:false. See |:menu-script|.
7732
  shortcut shortcut key (character after '&' in
 
7881
  with |remote_expr()| In most other places it always returns
7882
  "c" or "n".
7883
  Note that in the future more modes and more specific modes may
7884
+ be added. It's better not to compare the whole string but
7885
+ only the leading character(s).
7886
  Also see |visualmode()|.
7887
 
7888
  Can also be used as a |method|: >
 
7935
  ngettext({single}, {plural}, {number}[, {domain}) *ngettext()*
7936
  Return a string that contains the correct value for a
7937
  message based on the rules for plural form(s) in
7938
+ a language. Examples: >
7939
  ngettext("File", "Files", 2) # returns "Files"
7940
  <
7941
  Can be used as a |method|: >
 
8009
 
8010
  perleval({expr}) *perleval()*
8011
  Evaluate Perl expression {expr} in scalar context and return
8012
+ its result converted to Vim data structures. If value can't
8013
+ be converted, it is returned as a string Perl representation.
8014
  Note: If you want an array or hash, {expr} must return a
8015
  reference to it.
8016
  Example: >
 
8117
  % [pos-argument] [flags] [field-width] [.precision] type
8118
 
8119
  pos-argument
8120
+ At most one positional argument specifier. These take
8121
+ the form {n$}, where n is >= 1.
8122
 
8123
  flags
8124
  Zero or more of the following flags:
 
8194
  positional argument specifier, and a '*' is used to indicate
8195
  that a number argument is to be used to specify the width or
8196
  precision, the argument(s) to be used must also be specified
8197
+ using a {n$} positional argument specifier. See |printf-$|.
8198
 
8199
  The conversion specifiers and their meanings are:
8200
 
 
8221
  The b and B conversion specifiers never take a width
8222
  modifier and always assume their argument is a 64 bit
8223
  integer.
8224
+ Generally, these modifiers are not useful. They are
8225
  ignored when type is known from the argument.
8226
 
8227
  i alias for d
 
8293
  *printf-$*
8294
  In certain languages, error and informative messages are
8295
  more readable when the order of words is different from the
8296
+ corresponding message in English. To accommodate translations
8297
  having a different word order, positional arguments may be
8298
+ used to indicate this. For instance: >
8299
 
8300
  #, c-format
8301
  msgid "%s returning %s"
 
8314
  "Bram", "Moolenaar")
8315
  < In Belgium, vim's creator's name is: Moolenaar Bram
8316
 
8317
+ Width (and precision) can be specified using the '*'
8318
+ specifier. In this case, you must specify the field width
8319
+ position in the argument list. >
8320
 
8321
  echo printf("%1$*2$.*3$d", 1, 2, 3)
8322
  < 001 >
 
8516
  Evaluate Python expression {expr} and return its result
8517
  converted to Vim data structures.
8518
  If a {locals} |Dictionary| is given, it defines set of local
8519
+ variables available in the expression. The keys are variable
8520
+ names and the values are the variable values. |Dictionary|,
8521
  |List| and |Tuple| values are referenced, and may be updated
8522
  by the expression (as if |python-bindeval| was used).
8523
  Numbers and strings are returned as they are (strings are
 
8667
  readdir(dirname, {n -> n !~ '^\.\|\~$'})
8668
  < *E857*
8669
  The optional {dict} argument allows for further custom
8670
+ values. Currently this is used to specify if and how sorting
8671
+ should be performed. The dict can have the following members:
8672
 
8673
  sort How to sort the result returned from the system.
8674
  Valid values are:
 
8719
  following items:
8720
  group Group name of the entry. (Only on Unix)
8721
  name Name of the entry.
8722
+ perm Permissions of the entry. See |getfperm()|.
8723
+ size Size of the entry. See |getfsize()|.
8724
+ time Timestamp of the entry. See |getftime()|.
8725
  type Type of the entry.
8726
  On Unix, almost same as |getftype()| except:
8727
  Symlink to a dir "linkd"
 
8903
  call MyFunction()
8904
  echo reltimestr(reltime(start))
8905
  < Note that overhead for the commands will be added to the time.
8906
+ The accuracy depends on the system. Use reltimefloat() for
8907
+ the greatest accuracy which is nanoseconds on some systems.
8908
  Leading spaces are used to make the string align nicely. You
8909
  can use split() to remove it. >
8910
  echo split(reltimestr(reltime(start)))[0]
 
9144
  On MS-Windows, when {filename} is a shortcut (a .lnk file),
9145
  returns the path the shortcut points to in a simplified form.
9146
  When {filename} is a symbolic link or junction point, return
9147
+ the full path to the target. If the target of junction is
9148
  removed, return {filename}.
9149
  On Unix, repeat resolving symbolic links in all path
9150
  components of {filename} and return the simplified result.
 
9261
 
9262
  screencol() *screencol()*
9263
  The result is a Number, which is the current screen column of
9264
+ the cursor. The leftmost column has number 1.
9265
  This function is mainly used for testing.
9266
 
9267
  Note: Always returns the current screen column, thus if used
9268
  in a command (e.g. ":echo screencol()") it will return the
9269
  column inside the command line, which is 1 when the command is
9270
+ executed. To get the cursor position in the file use one of
9271
  the following mappings: >
9272
  nnoremap <expr> GG ":echom " .. screencol() .. "\n"
9273
  nnoremap <silent> GG :echom screencol()<CR>
 
9353
  If neither 'w' or 'W' is given, the 'wrapscan' option applies.
9354
 
9355
  If the 's' flag is supplied, the ' mark is set, only if the
9356
+ cursor is moved. The 's' flag cannot be combined with the 'n'
9357
  flag.
9358
 
9359
  'ignorecase', 'smartcase' and 'magic' are used.
 
9448
  without the "S" flag in 'shortmess'. This works even if
9449
  'shortmess' does contain the "S" flag.
9450
 
9451
+ This returns a |Dictionary|. The dictionary is empty if the
9452
  previous pattern was not set and "pattern" was not specified.
9453
 
9454
  key type meaning ~
 
9465
  For {options} see further down.
9466
 
9467
  To get the last search count when |n| or |N| was pressed, call
9468
+ this function with `recompute: 0` . This sometimes returns
9469
  wrong information because of 'maxsearchcount'.
9470
  If the count exceeded 'maxsearchcount', the result must be
9471
+ 'maxsearchcount' + 1. If you want to get correct information,
9472
  specify `recompute: 1`: >
9473
 
9474
  " result == 'maxsearchcount' + 1 when many matches
 
9531
  " search again
9532
  call searchcount()
9533
  <
9534
+ {options} must be a |Dictionary|. It can contain:
9535
  key type meaning ~
9536
  recompute |Boolean| if |TRUE|, recompute the count
9537
  like |n| or |N| was executed.
 
9689
  searchpairpos({start}, {middle}, {end} [, {flags} [, {skip}
9690
  [, {stopline} [, {timeout}]]]])
9691
  Same as |searchpair()|, but returns a |List| with the line and
9692
+ column position of the match. The first element of the |List|
9693
  is the line number and the second element is the byte index of
9694
  the column position of the match. If no match is found,
9695
  returns [0, 0]. >
 
9703
  *searchpos()*
9704
  searchpos({pattern} [, {flags} [, {stopline} [, {timeout} [, {skip}]]]])
9705
  Same as |search()|, but returns a |List| with the line and
9706
+ column position of the match. The first element of the |List|
9707
  is the line number and the second element is the byte index of
9708
+ the column position of the match. If no match is found,
9709
  returns [0, 0].
9710
  Example: >
9711
  :let [lnum, col] = searchpos('mypattern', 'n')
 
9756
  Set line {lnum} to {text} in buffer {buf}. This works like
9757
  |setline()| for the specified buffer.
9758
 
9759
+ This function works only for loaded buffers. First call
9760
  |bufload()| if needed.
9761
 
9762
  To insert lines use |appendbufline()|.
 
9979
 
9980
  setline({lnum}, {text}) *setline()*
9981
  Set line {lnum} of the current buffer to {text}. To insert
9982
+ lines use |append()|. To set lines in another buffer use
9983
  |setbufline()|.
9984
  Any text properties in {lnum} are cleared. See
9985
  |text-prop-cleared|
 
9991
  converted to a String. When {text} is an empty List then
9992
  nothing is changed and FALSE is returned.
9993
 
9994
+ If this succeeds, FALSE is returned. If this fails (most
9995
+ likely because {lnum} is invalid) TRUE is returned.
9996
  In |Vim9| script an error is given if {lnum} is invalid.
9997
 
9998
  Example: >
 
10028
  For {action} see |setqflist-action|.
10029
 
10030
  If the optional {what} dictionary argument is supplied, then
10031
+ only the items listed in {what} are set. Refer to |setqflist()|
10032
  for the list of supported keys in {what}.
10033
 
10034
  Can also be used as a |method|, the base is passed as the
 
10072
 
10073
  "lnum" and "col" are the position in the buffer. The first
10074
  column is 1. Use a zero "lnum" to delete a mark. If "col" is
10075
+ smaller than 1 then 1 is used. To use the character count
10076
  instead of the byte count, use |setcharpos()|.
10077
 
10078
+ The "off" number is only used when 'virtualedit' is set. Then
10079
  it is the offset in screen columns from the start of the
10080
  character. E.g., a position within a <Tab> or after the last
10081
  character.
 
10111
  Create or replace or add to the quickfix list.
10112
 
10113
  If the optional {what} dictionary argument is supplied, then
10114
+ only the items listed in {what} are set. The first {list}
10115
  argument is ignored. See below for the supported items in
10116
  {what}.
10117
  *setqflist-what*
10118
+ When {what} is not present, the items in {list} are used.
10119
+ Each item must be a dictionary. Non-dictionary items in
10120
+ {list} are ignored. Each dictionary item can contain the
10121
+ following entries:
10122
 
10123
  bufnr buffer number; must be the number of a valid
10124
  buffer
 
10157
 
10158
  {action} values: *setqflist-action* *E927*
10159
  'a' The items from {list} are added to the existing
10160
+ quickfix list. If there is no existing list, then a
10161
  new list is created.
10162
 
10163
  'r' The items from the current quickfix list are replaced
 
10171
  freed.
10172
 
10173
  If {action} is not present or is set to ' ', then a new list
10174
+ is created. The new quickfix list is added after the current
10175
  quickfix list in the stack and all the following lists are
10176
+ freed. To add a new quickfix list at the end of the stack,
10177
  set "nr" in {what} to "$".
10178
 
10179
  The following items can be specified in dictionary {what}:
10180
+ context quickfix list context. See |quickfix-context|
10181
  efm errorformat to use when parsing text from
10182
+ "lines". If this is not present, then the
10183
  'errorformat' option value is used.
10184
  See |quickfix-parse|
10185
  id quickfix list identifier |quickfix-ID|
10186
  idx index of the current entry in the quickfix
10187
+ list specified by 'id' or 'nr'. If set to
10188
+ '$', then the last entry in the list is set as
10189
+ the current entry. See |quickfix-index|
10190
+ items list of quickfix entries. Same as the {list}
10191
  argument.
10192
  lines use 'errorformat' to parse a list of lines and
10193
  add the resulting entries to the quickfix list
 
10202
  a function or a funcref or a lambda. Refer to
10203
  |quickfix-window-function| for an explanation
10204
  of how to write the function and an example.
10205
+ title quickfix list title text. See |quickfix-title|
10206
  Unsupported keys in {what} are ignored.
10207
+ If the "nr" item is not present, then the current quickfix
10208
+ list is modified. When creating a new quickfix list, "nr" can
10209
+ be set to a value one greater than the quickfix stack size.
10210
  When modifying a quickfix list, to guarantee that the correct
10211
  list is modified, "id" should be used instead of "nr" to
10212
  specify the list.
 
10251
 
10252
  If {options} contains no register settings, then the default
10253
  is to use character mode unless {value} ends in a <NL> for
10254
+ string {value} and linewise mode for list {value}. Blockwise
10255
  mode is never selected automatically.
10256
  Returns zero for success, non-zero for failure.
10257
 
10258
  *E883*
10259
  Note: you may not use |List| containing more than one item to
10260
+ set search and expression registers. Lists containing
10261
+ no items act like empty strings.
10262
 
10263
  Examples: >
10264
  :call setreg(v:register, @*)
 
10338
  {nr} can be the window number or the |window-ID|.
10339
 
10340
  For a list of supported items in {dict}, refer to
10341
+ |gettagstack()|. "curidx" takes effect before changing the tag
10342
  stack.
10343
  *E962*
10344
  How the tag stack is modified depends on the {action}
 
10412
  replace all "'" with "'\''".
10413
 
10414
  The {special} argument adds additional escaping of keywords
10415
+ used in Vim commands. When it is not omitted and a non-zero
10416
  number or a non-empty String (|non-zero-arg|), then special
10417
  items such as "!", "%", "#" and "<cword>" (as listed in
10418
  |expand()|) will be preceded by a backslash.
 
10428
  escaped a second time.
10429
 
10430
  The "\" character will be escaped when 'shell' contains "fish"
10431
+ in the tail. That is because for fish "\" is used as an
10432
+ escape character inside single quotes.
10433
 
10434
  Example of use with a |:!| command: >
10435
  :exe '!dir ' .. shellescape(expand('<cfile>'), 1)
 
10445
 
10446
 
10447
  shiftwidth([{col}]) *shiftwidth()*
10448
+ Returns the effective value of 'shiftwidth'. This is the
10449
  'shiftwidth' value unless it is zero, in which case it is the
10450
  'tabstop' value. This function was introduced with patch
10451
  7.3.694 in 2012, everybody should have it by now (however it
10452
  did not allow for the optional {col} argument until 8.1.542).
10453
 
10454
  When there is one argument {col} this is used as column number
10455
+ for which to return the 'shiftwidth' value. This matters for
10456
+ the 'vartabstop' feature. If the 'vartabstop' setting is
10457
+ enabled and no {col} argument is given, column 1 will be
10458
+ assumed.
10459
 
10460
  Can also be used as a |method|: >
10461
  GetColumn()->shiftwidth()
 
10471
  Unix) are not resolved. If the first path component in
10472
  {filename} designates the current directory, this will be
10473
  valid for the result as well. A trailing path separator is
10474
+ not removed either. On Unix "//path" is unchanged, but
10475
  "///path" is simplified to "/path" (this follows the Posix
10476
  standard).
10477
  Example: >
 
10553
  can be used to ignore case. Zero means to not ignore case.
10554
 
10555
  When {how} is given and it is 'l' then the current collation
10556
+ locale is used for ordering. Implementation details:
10557
+ strcoll() is used to compare strings. See |:language| check
10558
+ or set the collation locale. |v:collate| can also be used to
10559
+ check the current locale. Sorting using the locale typically
10560
+ ignores case. Example: >
10561
  " ö is sorted similarly to o with English locale.
10562
  :language collate en_US.UTF8
10563
  :echo sort(['n', 'o', 'O', 'ö', 'p', 'z'], 'l')
 
10576
  sort a list of strings with numbers!
10577
 
10578
  When {how} is given and it is 'N' then all items will be
10579
+ sorted numerical. This is like 'n' but a string containing
10580
  digits will be used as the number they represent.
10581
 
10582
  When {how} is given and it is 'f' then all items will be
10583
+ sorted numerical. All values must be a Number or a Float.
10584
 
10585
  When {how} is a |Funcref| or a function name, this function
10586
  is called to compare items. The function is invoked with two
 
10592
  used to set the local variable "self". |Dictionary-function|
10593
 
10594
  The sort is stable, items which compare equal (as number or as
10595
+ string) will keep their relative position. E.g., when sorting
10596
  on numbers, text strings will sort next to each other, in the
10597
  same order as they were originally.
10598
 
 
10688
  package, otherwise sound may not stop.
10689
 
10690
  On MS-Windows, this does not work for event sound started by
10691
+ `sound_playevent()`. To stop event sounds, use `sound_clear()`.
10692
 
10693
  Can also be used as a |method|: >
10694
  soundid->sound_stop()
 
10774
  empty each white space separated sequence of characters
10775
  becomes an item.
10776
  Otherwise the string is split where {pattern} matches,
10777
+ removing the matched characters. 'ignorecase' is not used
10778
  here, add \c to ignore case. |/\c|
10779
  When the first or last item is empty it is omitted, unless the
10780
  {keepempty} argument is given and it's non-zero.
 
10942
  str2list("ABC") returns [65, 66, 67]
10943
  < |list2str()| does the opposite.
10944
 
10945
+ When {utf8} is omitted or zero, the current 'encoding' is
10946
+ used.
10947
  When {utf8} is TRUE, always treat the String as UTF-8
10948
  characters. With UTF-8 composing characters are handled
10949
  properly: >
 
11061
  matters for anything that's displayed differently, such as
11062
  'tabstop' and 'display'.
11063
  When {string} contains characters with East Asian Width Class
11064
+ Ambiguous, this function's return value depends on
11065
+ 'ambiwidth'.
11066
  Returns zero on error.
11067
  Also see |strlen()|, |strwidth()| and |strchars()|.
11068
 
 
11320
  String {string} occupies. A Tab character is counted as one
11321
  cell, alternatively use |strdisplaywidth()|.
11322
  When {string} contains characters with East Asian Width Class
11323
+ Ambiguous, this function's return value depends on
11324
+ 'ambiwidth'.
11325
  Returns zero on error.
11326
  Also see |strlen()|, |strdisplaywidth()| and |strchars()|.
11327
 
 
11394
  < results in "TESTING".
11395
 
11396
  When {sub} starts with "\=", the remainder is interpreted as
11397
+ an expression. See |sub-replace-expression|. Example: >
11398
  :echo substitute(s, '%\(\x\x\)',
11399
  \ '\=nr2char("0x" .. submatch(1))', 'g')
11400
 
 
11430
 
11431
  swapinfo({fname}) *swapinfo()*
11432
  The result is a dictionary, which holds information about the
11433
+ swapfile {fname}. The available fields are:
11434
  version Vim version
11435
  user user name
11436
  host host name
 
11559
  1. The first item in the list is 0 if the character at the
11560
  position {lnum} and {col} is not part of a concealable
11561
  region, 1 if it is. {lnum} is used like with |getline()|.
11562
+ 2. The second item in the list is a string. If the first item
11563
  is 1, the second item contains the text which will be
11564
  displayed in place of the concealed text, depending on the
11565
  current setting of 'conceallevel' and 'listchars'.
11566
  3. The third and final item in the list is a number
11567
  representing the specific syntax region matched in the
11568
+ line. When the character is not concealed the value is
11569
+ zero. This allows detection of the beginning of a new
11570
  concealable region if there are two consecutive regions
11571
  with the same replacement character. For an example, if
11572
  the text is "123456" and both "23" and "45" are concealed
 
11676
 
11677
  systemlist({expr} [, {input}]) *systemlist()*
11678
  Same as |system()|, but returns a |List| with lines (parts of
11679
+ output separated by NL) with NULs transformed into NLs.
11680
+ Output is the same as |readfile()| will output with {binary}
11681
+ argument set to "b", except that there is no extra empty item
11682
+ when the result ends in a NL.
11683
  Note that on MS-Windows you may get trailing CR characters.
11684
 
11685
  To see the difference between "echo hello" and "echo -n hello"
 
11697
  tabpagebuflist([{arg}]) *tabpagebuflist()*
11698
  The result is a |List|, where each item is the number of the
11699
  buffer associated with each window in the current tab page.
11700
+ {arg} specifies the number of the tab page to be used. When
11701
  omitted the current tab page is used.
11702
  When {arg} is invalid the number zero is returned.
11703
  To get a list of all buffers in all tabs use this: >
 
11760
  Returns a |List| of tags matching the regular expression {expr}.
11761
 
11762
  If {filename} is passed it is used to prioritize the results
11763
+ in the same way that |:tselect| does. See |tag-priority|.
11764
  {filename} should be the full path of the file.
11765
 
11766
  Each list item is a dictionary with at least the following
 
11796
  search regular expression pattern.
11797
 
11798
  Refer to 'tags' for information about how the tags file is
11799
+ located by Vim. Refer to |tags-file-format| for the format of
11800
  the tags file generated by the different ctags tools.
11801
 
11802
  Can also be used as a |method|: >
 
11949
  timer_start({time}, {callback} [, {options}])
11950
  Create a timer and return the timer ID.
11951
 
11952
+ {time} is the waiting time in milliseconds. This is the
11953
  minimum time before invoking the callback. When the system is
11954
  busy or Vim is not waiting for input the time will be longer.
11955
  Zero can be used to execute the callback when Vim is back in
 
12327
  downwards to the beginning of that sequence.
12328
 
12329
  Returns -1 if the arguments are invalid or if there are less
12330
+ than {idx} bytes in {string}. If there are exactly {idx}
12331
+ bytes the length of the string in UTF-16 code units is
12332
+ returned.
12333
 
12334
  See |byteidx()| and |byteidxcomp()| for getting the byte index
12335
  from the UTF-16 index and |charidx()| for getting the
 
12368
  the character at that position. When there is a <Tab> at the
12369
  position, the returned Number will be the column at the end of
12370
  the <Tab>. For example, for a <Tab> in column 1, with 'ts'
12371
+ set to 8, it returns 8. |conceal| is ignored.
12372
  For the byte position use |col()|.
12373
 
12374
  For the use of {expr} see |getpos()| and |col()|.
 
12430
  byte in the character is returned.
12431
 
12432
  The {winid} argument can be the window number or the
12433
+ |window-ID|. If this is zero, then the current window is used.
12434
 
12435
  Returns -1 if the window {winid} doesn't exist or the buffer
12436
  line {lnum} or virtual column {col} is invalid.
 
12468
  Returns |TRUE| when the wildmenu is active and |FALSE|
12469
  otherwise. See 'wildmenu' and 'wildmode'.
12470
  This can be used in mappings to handle the 'wildcharm' option
12471
+ gracefully. (Makes only sense with |mapmode-c| mappings).
12472
 
12473
  For example to make <c-j> work like <down> in wildmode, use: >
12474
  :cnoremap <expr> <C-j> wildmenumode() ? "\<Down>\<Tab>" : "\<c-j>"
 
12551
 
12552
  win_gettype([{nr}]) *win_gettype()*
12553
  Return the type of the window:
12554
+ "autocmd" autocommand window. Temporary window
12555
  used to execute autocommands.
12556
  "command" command-line window |cmdwin|
12557
  (empty) normal window
 
12609
 
12610
  win_move_separator({nr}, {offset}) *win_move_separator()*
12611
  Move window {nr}'s vertical separator (i.e., the right border)
12612
+ by {offset} columns, as if being dragged by the mouse. {nr}
12613
+ can be a window number or |window-ID|. A positive {offset}
12614
+ moves right and a negative {offset} moves left. Moving a
12615
  window's vertical separator will change the width of the
12616
  window and the width of other windows adjacent to the vertical
12617
+ separator. The magnitude of movement may be smaller than
12618
  specified (e.g., as a consequence of maintaining
12619
+ 'winminwidth'). Returns TRUE if the window can be found and
12620
  FALSE otherwise.
12621
  This will fail for the rightmost window and a full-width
12622
  window, since it has no separator on the right.
 
12630
 
12631
  win_move_statusline({nr}, {offset}) *win_move_statusline()*
12632
  Move window {nr}'s status line (i.e., the bottom border) by
12633
+ {offset} rows, as if being dragged by the mouse. {nr} can be
12634
+ a window number or |window-ID|. A positive {offset} moves
12635
+ down and a negative {offset} moves up. Moving a window's
12636
+ status line will change the height of the window and the
12637
+ height of other windows adjacent to the status line. The
12638
+ magnitude of movement may be smaller than specified (e.g., as
12639
+ a consequence of maintaining 'winminheight'). Returns TRUE if
12640
+ the window can be found and FALSE otherwise.
12641
  Only works for the current tab page.
12642
 
12643
  Can also be used as a |method|: >
 
12740
  in a tabpage.
12741
 
12742
  Without {tabnr} use the current tabpage, otherwise the tabpage
12743
+ with number {tabnr}. If the tabpage {tabnr} is not found,
12744
  returns an empty list.
12745
 
12746
  For a leaf window, it returns:
 
12835
  Uses the |Dictionary| returned by |winsaveview()| to restore
12836
  the view of the current window.
12837
  Note: The {dict} does not have to contain all values, that are
12838
+ returned by |winsaveview()|. If values are missing, those
12839
+ settings won't be restored. So you can use: >
12840
  :call winrestview({'curswant': 4})
12841
  <
12842
  This will only set the curswant value (the column the cursor
12843
  wants to move on vertical movements) of the cursor to column 5
12844
  (yes, that is 5), while all other settings will remain the
12845
+ same. This is useful, if you set the cursor position
12846
+ manually.
12847
 
12848
  If you have changed the values the result is unpredictable.
12849
  If the window size changed the result won't be the same.
 
12862
  buffer and you want to go back to the original view.
12863
  This does not save fold information. Use the 'foldenable'
12864
  option to temporarily switch off folding, so that folds are
12865
+ not opened when moving around. This may have side effects.
12866
  The return value includes:
12867
  lnum cursor line number
12868
  col cursor column (Note: the first column
 
13251
  xpm_w32 Compiled with pixmap support for Win32. (Only for
13252
  backward compatibility. Use "xpm" instead.)
13253
  xsmp Compiled with X session management support.
13254
+ xsmp_interact Compiled with interactive X session management
13255
+ support.
13256
  xterm_clipboard Compiled with support for xterm clipboard.
13257
  xterm_save Compiled with support for saving and restoring the
13258
  xterm screen.
runtime/doc/change.txt CHANGED
@@ -1,4 +1,4 @@
1
- *change.txt* For Vim version 9.1. Last change: 2025 Aug 06
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
@@ -101,7 +101,7 @@ An exception for the d{motion} command: If the motion is not linewise, the
101
  start and end of the motion are not in the same line, and there are only
102
  blanks before the start and there are no non-blanks after the end of the
103
  motion, the delete becomes linewise. This means that the delete also removes
104
- the line of blanks that you might expect to remain. Use the |o_v| operator to
105
  force the motion to be characterwise or remove the "z" flag from 'cpoptions'
106
  (see |cpo-z|) to disable this peculiarity.
107
 
@@ -382,7 +382,7 @@ CTRL-A Add [count] to the number or alphabetic character at
382
 
383
  *v_g_CTRL-A*
384
  {Visual}g CTRL-A Add [count] to the number or alphabetic character in
385
- the highlighted text. If several lines are
386
  highlighted, each one will be incremented by an
387
  additional [count] (so effectively creating a
388
  [count] incrementing sequence).
@@ -413,7 +413,7 @@ CTRL-X Subtract [count] from the number or alphabetic
413
  <
414
  *v_g_CTRL-X*
415
  {Visual}g CTRL-X Subtract [count] from the number or alphabetic
416
- character in the highlighted text. If several lines
417
  are highlighted, each value will be decremented by an
418
  additional [count] (so effectively creating a [count]
419
  decrementing sequence).
@@ -866,7 +866,7 @@ the |substitute()| function with the following exceptions:
866
  - magic is always set without regard to 'magic'.
867
  - A ~ inserts a tilde literally.
868
  - <CR> and \r inserts a carriage-return (CTRL-M).
869
- - \<CR> does not have a special meaning. It's just one of \x.
870
 
871
  Examples: >
872
  :s/a\|b/xxx\0xxx/g modifies "a b" to "xxxaxxx xxxbxxx"
@@ -878,7 +878,7 @@ Examples: >
878
 
879
  Note: "\L\u" can be used to capitalize the first letter of a word. This is
880
  not compatible with Vi and older versions of Vim, where the "\u" would cancel
881
- out the "\L". Same for "\U\l".
882
 
883
  Note: In previous versions CTRL-V was handled in a special way. Since this is
884
  not Vi compatible, this was removed. Use a backslash instead.
@@ -950,7 +950,7 @@ real <NL> character (which will be a NUL in the file).
950
 
951
  The "\=" notation can also be used inside the third argument {sub} of
952
  |substitute()| function. In this case, the special meaning for characters as
953
- mentioned at |sub-replace-special| does not apply at all. Especially, <CR> and
954
  <NL> are interpreted not as a line break but as a carriage-return and a
955
  new-line respectively.
956
 
@@ -1092,7 +1092,7 @@ inside of strings can change! Also see 'softtabstop' option. >
1092
  with `zp`. (for {Visual} see |Visual-mode|)
1093
 
1094
  *:y* *:yank* *E850*
1095
- :[range]y[ank] [x] Yank [range] lines [into register x]. Yanking to the
1096
  "* or "+ registers is possible only when the
1097
  |+clipboard| feature is included.
1098
 
@@ -1173,9 +1173,9 @@ inside of strings can change! Also see 'softtabstop' option. >
1173
  or 'a'.
1174
 
1175
  ["x]zp or *zp* *zP*
1176
- ["x]zP Like "p" and "P", except without adding trailing spaces
1177
- when pasting a block. Thus the inserted text will not
1178
- always be a rectangle. Especially useful in
1179
  combination with |v_zy|.
1180
 
1181
  You can use these commands to copy text from one place to another. Do this
@@ -1210,7 +1210,7 @@ With |p| the previously selected text is put in the unnamed register (and
1210
  possibly the selection and/or clipboard). This is useful if you want to put
1211
  that text somewhere else. But you cannot repeat the same change.
1212
  With |P| the unnamed register is not changed (and neither the selection or
1213
- clipboard), you can repeat the same change. But the deleted text cannot be
1214
  used. If you do need it you can use |p| with another register. E.g., yank
1215
  the text to copy, Visually select the text to replace and use "0p . You can
1216
  repeat this as many times as you like, and the unnamed register will be
@@ -1291,8 +1291,8 @@ text is less than one line (the small delete register is used then). An
1291
  exception is made for the delete operator with these movement commands: |%|,
1292
  |(|, |)|, |`|, |/|, |?|, |n|, |N|, |{| and |}|.
1293
  Register "1 is always used then (this is Vi compatible). The "- register is
1294
- used as well if the delete is within a line. Note that these characters may be
1295
- mapped. E.g. |%| is mapped by the matchit plugin.
1296
  With each successive deletion or change, Vim shifts the previous contents
1297
  of register 1 into register 2, 2 into 3, and so forth, losing the previous
1298
  contents of register 9.
@@ -1608,11 +1608,11 @@ type of comment string. A part consists of:
1608
 
1609
  e End of a three-piece comment
1610
 
1611
- l Left align. Used together with 's' or 'e', the leftmost character of
1612
  start or end will line up with the leftmost character from the middle.
1613
- This is the default and can be omitted. See below for more details.
1614
 
1615
- r Right align. Same as above but rightmost instead of leftmost. See
1616
  below for more details.
1617
 
1618
  O Don't consider this comment for the "O" command.
@@ -1624,8 +1624,8 @@ type of comment string. A part consists of:
1624
 
1625
  {digits}
1626
  When together with 's' or 'e': add {digit} amount of offset to an
1627
- automatically inserted middle or end comment leader. The offset begins
1628
- from a left alignment. See below for more details.
1629
 
1630
  -{digits}
1631
  Like {digits} but reduce the indent. This only works when there is
@@ -1664,7 +1664,7 @@ part which is longer, the end part is used. This makes a C style comment work
1664
  without requiring the middle part to end with a space.
1665
 
1666
  Here is an example of alignment flags at work to make a comment stand out
1667
- (kind of looks like a 1 too). Consider comment string: >
1668
  :set comments=sr:/***,m:**,ex-2:******/
1669
  <
1670
  /*** ~
@@ -1675,7 +1675,7 @@ offset 2 spaces for the "-2" flag--->** ~
1675
  In this case, the first comment was typed, then return was pressed 4 times,
1676
  then "/" was pressed to end the comment.
1677
 
1678
- Here are some finer points of three part comments. There are three times when
1679
  alignment and offset flags are taken into consideration: opening a new line
1680
  after a start-comment, opening a new line before an end-comment, and
1681
  automatically ending a three-piece comment. The end alignment flag has a
@@ -1686,11 +1686,11 @@ will override the "r" and "l" flag.
1686
 
1687
  Enabling 'cindent' will override the alignment flags in many cases.
1688
  Reindenting using a different method like |gq| or |=| will not consult
1689
- alignment flags either. The same behaviour can be defined in those other
1690
- formatting options. One consideration is that 'cindent' has additional options
1691
- for context based indenting of comments but cannot replicate many three piece
1692
- indent alignments. However, 'indentexpr' has the ability to work better with
1693
- three piece comments.
1694
 
1695
  Other examples: >
1696
  "b:*" Includes lines starting with "*", but not if the "*" is
@@ -1787,7 +1787,7 @@ B When joining lines, don't insert a space between two multibyte
1787
  1 Don't break a line after a one-letter word. It's broken before it
1788
  instead (if possible).
1789
  *fo-]*
1790
- ] Respect 'textwidth' rigorously. With this flag set, no line can be
1791
  longer than 'textwidth', unless line-break-prohibition rules make this
1792
  impossible. Mainly for CJK scripts and works only if 'encoding' is
1793
  "utf-8".
@@ -1825,8 +1825,8 @@ is when the 'a' flag is present. |auto-format|
1825
 
1826
  Note that when 'paste' is on, Vim does no formatting at all.
1827
 
1828
- Note that 'textwidth' can be non-zero even if Vim never performs auto-wrapping;
1829
- 'textwidth' is still useful for formatting with "gq".
1830
 
1831
  If the 'comments' option includes "/*", "*" and/or "*/", then Vim has some
1832
  built in stuff to treat these types of comments a bit more cleverly.
@@ -1913,8 +1913,8 @@ Also see |:uniq|.
1913
  *:sort-l*
1914
  With [l] sort uses the current collation locale.
1915
  Implementation details: strcoll() is used to compare
1916
- strings. See |:language| to check or set the collation
1917
- locale. Example: >
1918
  :language collate en_US.UTF-8
1919
  :%sort l
1920
  < |v:collate| can also used to check the current locale.
@@ -1930,7 +1930,7 @@ Also see |:uniq|.
1930
  With [f] sorting is done on the Float in the line.
1931
  The value of Float is determined similar to passing
1932
  the text (after or inside a {pattern} match) to
1933
- str2float() function. This option is available only
1934
  if Vim was compiled with Floating point support.
1935
 
1936
  With [x] sorting is done on the first hexadecimal
 
1
+ *change.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
 
101
  start and end of the motion are not in the same line, and there are only
102
  blanks before the start and there are no non-blanks after the end of the
103
  motion, the delete becomes linewise. This means that the delete also removes
104
+ the line of blanks that you might expect to remain. Use the |o_v| operator to
105
  force the motion to be characterwise or remove the "z" flag from 'cpoptions'
106
  (see |cpo-z|) to disable this peculiarity.
107
 
 
382
 
383
  *v_g_CTRL-A*
384
  {Visual}g CTRL-A Add [count] to the number or alphabetic character in
385
+ the highlighted text. If several lines are
386
  highlighted, each one will be incremented by an
387
  additional [count] (so effectively creating a
388
  [count] incrementing sequence).
 
413
  <
414
  *v_g_CTRL-X*
415
  {Visual}g CTRL-X Subtract [count] from the number or alphabetic
416
+ character in the highlighted text. If several lines
417
  are highlighted, each value will be decremented by an
418
  additional [count] (so effectively creating a [count]
419
  decrementing sequence).
 
866
  - magic is always set without regard to 'magic'.
867
  - A ~ inserts a tilde literally.
868
  - <CR> and \r inserts a carriage-return (CTRL-M).
869
+ - \<CR> does not have a special meaning. It's just one of \x.
870
 
871
  Examples: >
872
  :s/a\|b/xxx\0xxx/g modifies "a b" to "xxxaxxx xxxbxxx"
 
878
 
879
  Note: "\L\u" can be used to capitalize the first letter of a word. This is
880
  not compatible with Vi and older versions of Vim, where the "\u" would cancel
881
+ out the "\L". Same for "\U\l".
882
 
883
  Note: In previous versions CTRL-V was handled in a special way. Since this is
884
  not Vi compatible, this was removed. Use a backslash instead.
 
950
 
951
  The "\=" notation can also be used inside the third argument {sub} of
952
  |substitute()| function. In this case, the special meaning for characters as
953
+ mentioned at |sub-replace-special| does not apply at all. Especially, <CR> and
954
  <NL> are interpreted not as a line break but as a carriage-return and a
955
  new-line respectively.
956
 
 
1092
  with `zp`. (for {Visual} see |Visual-mode|)
1093
 
1094
  *:y* *:yank* *E850*
1095
+ :[range]y[ank] [x] Yank [range] lines [into register x]. Yanking to the
1096
  "* or "+ registers is possible only when the
1097
  |+clipboard| feature is included.
1098
 
 
1173
  or 'a'.
1174
 
1175
  ["x]zp or *zp* *zP*
1176
+ ["x]zP Like "p" and "P", except without adding trailing
1177
+ spaces when pasting a block. Thus the inserted text
1178
+ will not always be a rectangle. Especially useful in
1179
  combination with |v_zy|.
1180
 
1181
  You can use these commands to copy text from one place to another. Do this
 
1210
  possibly the selection and/or clipboard). This is useful if you want to put
1211
  that text somewhere else. But you cannot repeat the same change.
1212
  With |P| the unnamed register is not changed (and neither the selection or
1213
+ clipboard), you can repeat the same change. But the deleted text cannot be
1214
  used. If you do need it you can use |p| with another register. E.g., yank
1215
  the text to copy, Visually select the text to replace and use "0p . You can
1216
  repeat this as many times as you like, and the unnamed register will be
 
1291
  exception is made for the delete operator with these movement commands: |%|,
1292
  |(|, |)|, |`|, |/|, |?|, |n|, |N|, |{| and |}|.
1293
  Register "1 is always used then (this is Vi compatible). The "- register is
1294
+ used as well if the delete is within a line. Note that these characters may
1295
+ be mapped. E.g. |%| is mapped by the matchit plugin.
1296
  With each successive deletion or change, Vim shifts the previous contents
1297
  of register 1 into register 2, 2 into 3, and so forth, losing the previous
1298
  contents of register 9.
 
1608
 
1609
  e End of a three-piece comment
1610
 
1611
+ l Left align. Used together with 's' or 'e', the leftmost character of
1612
  start or end will line up with the leftmost character from the middle.
1613
+ This is the default and can be omitted. See below for more details.
1614
 
1615
+ r Right align. Same as above but rightmost instead of leftmost. See
1616
  below for more details.
1617
 
1618
  O Don't consider this comment for the "O" command.
 
1624
 
1625
  {digits}
1626
  When together with 's' or 'e': add {digit} amount of offset to an
1627
+ automatically inserted middle or end comment leader. The offset
1628
+ begins from a left alignment. See below for more details.
1629
 
1630
  -{digits}
1631
  Like {digits} but reduce the indent. This only works when there is
 
1664
  without requiring the middle part to end with a space.
1665
 
1666
  Here is an example of alignment flags at work to make a comment stand out
1667
+ (kind of looks like a 1 too). Consider comment string: >
1668
  :set comments=sr:/***,m:**,ex-2:******/
1669
  <
1670
  /*** ~
 
1675
  In this case, the first comment was typed, then return was pressed 4 times,
1676
  then "/" was pressed to end the comment.
1677
 
1678
+ Here are some finer points of three part comments. There are three times when
1679
  alignment and offset flags are taken into consideration: opening a new line
1680
  after a start-comment, opening a new line before an end-comment, and
1681
  automatically ending a three-piece comment. The end alignment flag has a
 
1686
 
1687
  Enabling 'cindent' will override the alignment flags in many cases.
1688
  Reindenting using a different method like |gq| or |=| will not consult
1689
+ alignment flags either. The same behaviour can be defined in those other
1690
+ formatting options. One consideration is that 'cindent' has additional
1691
+ options for context based indenting of comments but cannot replicate many
1692
+ three piece indent alignments. However, 'indentexpr' has the ability to work
1693
+ better with three piece comments.
1694
 
1695
  Other examples: >
1696
  "b:*" Includes lines starting with "*", but not if the "*" is
 
1787
  1 Don't break a line after a one-letter word. It's broken before it
1788
  instead (if possible).
1789
  *fo-]*
1790
+ ] Respect 'textwidth' rigorously. With this flag set, no line can be
1791
  longer than 'textwidth', unless line-break-prohibition rules make this
1792
  impossible. Mainly for CJK scripts and works only if 'encoding' is
1793
  "utf-8".
 
1825
 
1826
  Note that when 'paste' is on, Vim does no formatting at all.
1827
 
1828
+ Note that 'textwidth' can be non-zero even if Vim never performs
1829
+ auto-wrapping; 'textwidth' is still useful for formatting with "gq".
1830
 
1831
  If the 'comments' option includes "/*", "*" and/or "*/", then Vim has some
1832
  built in stuff to treat these types of comments a bit more cleverly.
 
1913
  *:sort-l*
1914
  With [l] sort uses the current collation locale.
1915
  Implementation details: strcoll() is used to compare
1916
+ strings. See |:language| to check or set the collation
1917
+ locale. Example: >
1918
  :language collate en_US.UTF-8
1919
  :%sort l
1920
  < |v:collate| can also used to check the current locale.
 
1930
  With [f] sorting is done on the Float in the line.
1931
  The value of Float is determined similar to passing
1932
  the text (after or inside a {pattern} match) to
1933
+ str2float() function. This option is available only
1934
  if Vim was compiled with Floating point support.
1935
 
1936
  With [x] sorting is done on the first hexadecimal
runtime/doc/channel.txt CHANGED
@@ -1,4 +1,4 @@
1
- *channel.txt* For Vim version 9.1. Last change: 2024 Jul 17
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
@@ -89,7 +89,8 @@ The number will increase every time you send a message.
89
  The server can send a command to Vim. Type this on T1 (literally, including
90
  the quotes):
91
  ["ex","echo 'hi there'"] ~
92
- And you should see the message in Vim. You can move the cursor a word forward:
 
93
  ["normal","w"] ~
94
 
95
  To handle asynchronous communication a callback needs to be used: >
@@ -234,7 +235,7 @@ what you want! Stopping the job with job_stop() might be better.
234
  All readahead is discarded, callbacks will no longer be invoked.
235
 
236
  Note that a channel is closed in three stages:
237
- - The I/O ends, log message: "Closing channel". There can still be queued
238
  messages to read or callbacks to invoke.
239
  - The readahead is cleared, log message: "Clearing channel". Some variables
240
  may still reference the channel.
@@ -478,7 +479,7 @@ To read from the error output use the "part" option:
478
  {"part": "err"} ~
479
  To read a message with a specific ID, on a JS or JSON channel:
480
  {"id": 99} ~
481
- When no ID is specified or the ID is -1, the first message is returned. This
482
  overrules any callback waiting for this message.
483
 
484
  For a RAW channel this returns whatever is available, since Vim does not know
@@ -571,7 +572,8 @@ ch_evalraw({handle}, {string} [, {options}]) *ch_evalraw()*
571
  Return type: dict<any> or |String|
572
 
573
  ch_getbufnr({handle}, {what}) *ch_getbufnr()*
574
- Get the buffer number that {handle} is using for String {what}.
 
575
  {handle} can be a Channel or a Job that has a Channel.
576
  {what} can be "err" for stderr, "out" for stdout or empty for
577
  socket output.
@@ -728,7 +730,7 @@ ch_sendexpr({handle}, {expr} [, {options}]) *ch_sendexpr()*
728
  {handle} can be a Channel or a Job that has a Channel.
729
  When using the "lsp" channel mode, {expr} must be a |Dict|.
730
 
731
- If the channel mode is "lsp", then returns a Dict. Otherwise
732
  returns an empty String. If the "callback" item is present in
733
  {options}, then the returned Dict contains the ID of the
734
  request message. The ID can be used to send a cancellation
@@ -813,12 +815,12 @@ been received and not parsed correctly.
813
  If the command produces a line of output that you want to deal with, specify
814
  a handler for stdout: >
815
  let job = job_start(command, {"out_cb": "MyHandler"})
816
- The function will be called with the channel and a message. You would define
817
  it like this: >
818
  func MyHandler(channel, msg)
819
 
820
  Without the handler you need to read the output with |ch_read()| or
821
- |ch_readraw()|. You can do this in the close callback, see |read-in-close-cb|.
822
 
823
  Note that if the job exits before you read the output, the output may be lost.
824
  This depends on the system (on Unix this happens because closing the write end
@@ -856,7 +858,7 @@ To run a job that reads from a buffer: >
856
  \ {'in_io': 'buffer', 'in_name': 'mybuffer'})
857
  <
858
  *E915* *E918*
859
- The buffer is found by name, similar to |bufnr()|. The buffer must exist and
860
  be loaded when job_start() is called.
861
 
862
  By default this reads the whole buffer. This can be changed with the "in_top"
@@ -933,7 +935,8 @@ job_info([{job}]) *job_info()*
933
  Returns a Dictionary with information about {job}:
934
  "status" what |job_status()| returns
935
  "channel" what |job_getchannel()| returns
936
- "cmd" List of command arguments used to start the job
 
937
  "process" process ID
938
  "tty_in" terminal input name, empty when none
939
  "tty_out" terminal output name, empty when none
@@ -985,11 +988,11 @@ job_start({command} [, {options}]) *job_start()*
985
  passed to execvp(). Arguments in double quotes can contain
986
  white space.
987
 
988
- {command} can be a List, where the first item is the executable
989
- and further items are the arguments. All items are converted
990
- to String. This works best on Unix.
991
 
992
- On MS-Windows, job_start() makes a GUI application hidden. If
993
  you want to show it, use |:!start| instead.
994
 
995
  The command is executed directly, not through a shell, the
@@ -1311,7 +1314,7 @@ To get the status of a job: >
1311
  To make a job stop running: >
1312
  job_stop(job)
1313
 
1314
- This is the normal way to end a job. On Unix it sends a SIGTERM to the job.
1315
  It is possible to use other ways to stop the job, or even send arbitrary
1316
  signals. E.g. to force a job to stop, "kill it": >
1317
  job_stop(job, "kill")
@@ -1327,10 +1330,10 @@ If you want to type input for the job in a Vim window you have a few options:
1327
  - Use a terminal window. This works well if what you type goes directly to
1328
  the job and the job output is directly displayed in the window.
1329
  See |terminal-window|.
1330
- - Use a window with a prompt buffer. This works well when entering a line for
1331
  the job in Vim while displaying (possibly filtered) output from the job.
1332
 
1333
- A prompt buffer is created by setting 'buftype' to "prompt". You would
1334
  normally only do that in a newly created buffer.
1335
 
1336
  The user can edit and enter one line of text at the very last line of the
@@ -1339,8 +1342,8 @@ buffer. When pressing Enter in the prompt line the callback set with
1339
  Another callback would receive the output from the job and display it in the
1340
  buffer, below the prompt (and above the next prompt).
1341
 
1342
- Only the text in the last line, after the prompt, is editable. The rest of the
1343
- buffer is not modifiable with Normal mode commands. It can be modified by
1344
  calling functions, such as |append()|. Using other commands may mess up the
1345
  buffer.
1346
 
@@ -1348,8 +1351,8 @@ After setting 'buftype' to "prompt" Vim does not automatically start Insert
1348
  mode, use `:startinsert` if you want to enter Insert mode, so that the user
1349
  can start typing a line.
1350
 
1351
- The text of the prompt can be set with the |prompt_setprompt()| function. If
1352
- no prompt is set with |prompt_setprompt()|, "% " is used. You can get the
1353
  effective prompt text for a buffer, with |prompt_getprompt()|.
1354
 
1355
  The user can go to Normal mode and navigate through the buffer. This can be
@@ -1357,7 +1360,7 @@ useful to see older output or copy text.
1357
 
1358
  The CTRL-W key can be used to start a window command, such as CTRL-W w to
1359
  switch to the next window. This also works in Insert mode (use Shift-CTRL-W
1360
- to delete a word). When leaving the window Insert mode will be stopped. When
1361
  coming back to the prompt window Insert mode will be restored.
1362
 
1363
  Any command that starts Insert mode, such as "a", "i", "A" and "I", will move
@@ -1476,7 +1479,7 @@ To open a channel using the 'lsp' mode, set the 'mode' item in the |ch_open()|
1476
  let ch = ch_open(..., #{mode: 'lsp'})
1477
 
1478
  To open a channel using the 'lsp' mode with a job, set the 'in_mode' and
1479
- 'out_mode' items in the |job_start()| {options} argument to 'lsp'. Example: >
1480
 
1481
  let cmd = ['clangd', '--background-index', '--clang-tidy']
1482
  let opts = {}
@@ -1494,8 +1497,8 @@ formats appropriately or you should use a separate callback function for
1494
  "out_cb" and "err_cb" to handle them as shown above.
1495
 
1496
  To synchronously send a JSON-RPC request to the server, use the
1497
- |ch_evalexpr()| function. This function will wait and return the decoded
1498
- response message from the server. You can use either the |channel-timeout| or
1499
  the 'timeout' field in the {options} argument to control the response wait
1500
  time. If the request times out, then an empty |Dict| is returned. Example: >
1501
 
@@ -1509,9 +1512,10 @@ time. If the request times out, then an empty |Dict| is returned. Example: >
1509
  ... <handle failure>
1510
  endif
1511
 
1512
- Note that in the request message the 'id' field should not be specified. If it
1513
- is specified, then Vim will overwrite the value with an internally generated
1514
- identifier. Vim currently supports only a number type for the 'id' field.
 
1515
  The callback function will be invoked for both a successful and a failed RPC
1516
  request.
1517
 
@@ -1549,14 +1553,14 @@ for the request. Example: >
1549
  call ch_sendexpr(ch, notif)
1550
 
1551
  To send a JSON-RPC notification message to the server, use the |ch_sendexpr()|
1552
- function. As the server will not send a response message to the notification,
1553
  don't specify the "callback" item. Example: >
1554
 
1555
  call ch_sendexpr(ch, #{method: 'initialized'})
1556
 
1557
  To respond to a JSON-RPC request message from the server, use the
1558
  |ch_sendexpr()| function. In the response message, copy the 'id' field value
1559
- from the server request message. Example: >
1560
 
1561
  let resp = {}
1562
  let resp.id = req.id
 
1
+ *channel.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
 
89
  The server can send a command to Vim. Type this on T1 (literally, including
90
  the quotes):
91
  ["ex","echo 'hi there'"] ~
92
+ And you should see the message in Vim. You can move the cursor a word
93
+ forward:
94
  ["normal","w"] ~
95
 
96
  To handle asynchronous communication a callback needs to be used: >
 
235
  All readahead is discarded, callbacks will no longer be invoked.
236
 
237
  Note that a channel is closed in three stages:
238
+ - The I/O ends, log message: "Closing channel". There can still be queued
239
  messages to read or callbacks to invoke.
240
  - The readahead is cleared, log message: "Clearing channel". Some variables
241
  may still reference the channel.
 
479
  {"part": "err"} ~
480
  To read a message with a specific ID, on a JS or JSON channel:
481
  {"id": 99} ~
482
+ When no ID is specified or the ID is -1, the first message is returned. This
483
  overrules any callback waiting for this message.
484
 
485
  For a RAW channel this returns whatever is available, since Vim does not know
 
572
  Return type: dict<any> or |String|
573
 
574
  ch_getbufnr({handle}, {what}) *ch_getbufnr()*
575
+ Get the buffer number that {handle} is using for String
576
+ {what}.
577
  {handle} can be a Channel or a Job that has a Channel.
578
  {what} can be "err" for stderr, "out" for stdout or empty for
579
  socket output.
 
730
  {handle} can be a Channel or a Job that has a Channel.
731
  When using the "lsp" channel mode, {expr} must be a |Dict|.
732
 
733
+ If the channel mode is "lsp", then returns a Dict. Otherwise
734
  returns an empty String. If the "callback" item is present in
735
  {options}, then the returned Dict contains the ID of the
736
  request message. The ID can be used to send a cancellation
 
815
  If the command produces a line of output that you want to deal with, specify
816
  a handler for stdout: >
817
  let job = job_start(command, {"out_cb": "MyHandler"})
818
+ The function will be called with the channel and a message. You would define
819
  it like this: >
820
  func MyHandler(channel, msg)
821
 
822
  Without the handler you need to read the output with |ch_read()| or
823
+ |ch_readraw()|. You can do this in the close callback, see |read-in-close-cb|.
824
 
825
  Note that if the job exits before you read the output, the output may be lost.
826
  This depends on the system (on Unix this happens because closing the write end
 
858
  \ {'in_io': 'buffer', 'in_name': 'mybuffer'})
859
  <
860
  *E915* *E918*
861
+ The buffer is found by name, similar to |bufnr()|. The buffer must exist and
862
  be loaded when job_start() is called.
863
 
864
  By default this reads the whole buffer. This can be changed with the "in_top"
 
935
  Returns a Dictionary with information about {job}:
936
  "status" what |job_status()| returns
937
  "channel" what |job_getchannel()| returns
938
+ "cmd" List of command arguments used to start the
939
+ job
940
  "process" process ID
941
  "tty_in" terminal input name, empty when none
942
  "tty_out" terminal output name, empty when none
 
988
  passed to execvp(). Arguments in double quotes can contain
989
  white space.
990
 
991
+ {command} can be a List, where the first item is the
992
+ executable and further items are the arguments. All items are
993
+ converted to String. This works best on Unix.
994
 
995
+ On MS-Windows, job_start() makes a GUI application hidden. If
996
  you want to show it, use |:!start| instead.
997
 
998
  The command is executed directly, not through a shell, the
 
1314
  To make a job stop running: >
1315
  job_stop(job)
1316
 
1317
+ This is the normal way to end a job. On Unix it sends a SIGTERM to the job.
1318
  It is possible to use other ways to stop the job, or even send arbitrary
1319
  signals. E.g. to force a job to stop, "kill it": >
1320
  job_stop(job, "kill")
 
1330
  - Use a terminal window. This works well if what you type goes directly to
1331
  the job and the job output is directly displayed in the window.
1332
  See |terminal-window|.
1333
+ - Use a window with a prompt buffer. This works well when entering a line for
1334
  the job in Vim while displaying (possibly filtered) output from the job.
1335
 
1336
+ A prompt buffer is created by setting 'buftype' to "prompt". You would
1337
  normally only do that in a newly created buffer.
1338
 
1339
  The user can edit and enter one line of text at the very last line of the
 
1342
  Another callback would receive the output from the job and display it in the
1343
  buffer, below the prompt (and above the next prompt).
1344
 
1345
+ Only the text in the last line, after the prompt, is editable. The rest of
1346
+ the buffer is not modifiable with Normal mode commands. It can be modified by
1347
  calling functions, such as |append()|. Using other commands may mess up the
1348
  buffer.
1349
 
 
1351
  mode, use `:startinsert` if you want to enter Insert mode, so that the user
1352
  can start typing a line.
1353
 
1354
+ The text of the prompt can be set with the |prompt_setprompt()| function. If
1355
+ no prompt is set with |prompt_setprompt()|, "% " is used. You can get the
1356
  effective prompt text for a buffer, with |prompt_getprompt()|.
1357
 
1358
  The user can go to Normal mode and navigate through the buffer. This can be
 
1360
 
1361
  The CTRL-W key can be used to start a window command, such as CTRL-W w to
1362
  switch to the next window. This also works in Insert mode (use Shift-CTRL-W
1363
+ to delete a word). When leaving the window Insert mode will be stopped. When
1364
  coming back to the prompt window Insert mode will be restored.
1365
 
1366
  Any command that starts Insert mode, such as "a", "i", "A" and "I", will move
 
1479
  let ch = ch_open(..., #{mode: 'lsp'})
1480
 
1481
  To open a channel using the 'lsp' mode with a job, set the 'in_mode' and
1482
+ 'out_mode' items in the |job_start()| {options} argument to 'lsp'. Example: >
1483
 
1484
  let cmd = ['clangd', '--background-index', '--clang-tidy']
1485
  let opts = {}
 
1497
  "out_cb" and "err_cb" to handle them as shown above.
1498
 
1499
  To synchronously send a JSON-RPC request to the server, use the
1500
+ |ch_evalexpr()| function. This function will wait and return the decoded
1501
+ response message from the server. You can use either the |channel-timeout| or
1502
  the 'timeout' field in the {options} argument to control the response wait
1503
  time. If the request times out, then an empty |Dict| is returned. Example: >
1504
 
 
1512
  ... <handle failure>
1513
  endif
1514
 
1515
+ Note that in the request message the 'id' field should not be specified. If
1516
+ it is specified, then Vim will overwrite the value with an internally
1517
+ generated identifier. Vim currently supports only a number type for the 'id'
1518
+ field.
1519
  The callback function will be invoked for both a successful and a failed RPC
1520
  request.
1521
 
 
1553
  call ch_sendexpr(ch, notif)
1554
 
1555
  To send a JSON-RPC notification message to the server, use the |ch_sendexpr()|
1556
+ function. As the server will not send a response message to the notification,
1557
  don't specify the "callback" item. Example: >
1558
 
1559
  call ch_sendexpr(ch, #{method: 'initialized'})
1560
 
1561
  To respond to a JSON-RPC request message from the server, use the
1562
  |ch_sendexpr()| function. In the response message, copy the 'id' field value
1563
+ from the server request message. Example: >
1564
 
1565
  let resp = {}
1566
  let resp.id = req.id
runtime/doc/cmdline.txt CHANGED
@@ -1,4 +1,4 @@
1
- *cmdline.txt* For Vim version 9.1. Last change: 2025 Sep 24
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
@@ -162,7 +162,8 @@ CTRL-R {register} *c_CTRL-R* *c_<C-R>*
162
  the last delete or yank
163
  '%' the current file name
164
  '#' the alternate file name
165
- '*' the clipboard contents (X11: primary selection)
 
166
  '+' the clipboard contents
167
  '/' the last search pattern
168
  ':' the last command-line
@@ -440,7 +441,8 @@ CTRL-D List names that match the pattern in front of the cursor.
440
  <S-Tab> does not work everywhere.
441
  *c_CTRL-N*
442
  CTRL-N After using 'wildchar' which got multiple matches, go to next
443
- match. Otherwise recall more recent command-line from history.
 
444
  *c_CTRL-P*
445
  CTRL-P After using 'wildchar' which got multiple matches, go to
446
  previous match. Otherwise recall older command-line from
@@ -728,9 +730,9 @@ See also |`=|.
728
 
729
  *:_!*
730
  The '!' (bang) character after an Ex command makes the command behave in a
731
- different way. The '!' should be placed immediately after the command, without
732
- any blanks in between. If you insert blanks the '!' will be seen as an
733
- argument for the command, which has a different meaning. For example:
734
  :w! name write the current buffer to file "name", overwriting
735
  any existing file
736
  :w !name send the current buffer as standard input to command
@@ -1105,8 +1107,9 @@ Note: these are typed literally, they are not special keys!
1105
  *filename-modifiers*
1106
  *:_%:* *::8* *::p* *::.* *::~* *::h* *::t* *::r* *::e* *::s* *::gs* *::S*
1107
  *%:8* *%:p* *%:.* *%:~* *%:h* *%:t* *%:r* *%:e* *%:s* *%:gs* *%:S*
1108
- The file name modifiers can be used after "%", "#", "#n", "<cfile>", "<sfile>",
1109
- "<afile>" or "<abuf>". They are also used with the |fnamemodify()| function.
 
1110
 
1111
  These modifiers can be given, in this order:
1112
  :p Make file name a full path. Must be the first modifier. Also
@@ -1159,7 +1162,7 @@ These modifiers can be given, in this order:
1159
  Substitute all occurrences of "pat" with "sub". Otherwise
1160
  this works like ":s".
1161
  :S Escape special characters for use with a shell command (see
1162
- |shellescape()|). Must be the last one. Examples: >
1163
  :!dir <cfile>:S
1164
  :call system('chmod +w -- ' .. expand('%:S'))
1165
 
@@ -1240,9 +1243,9 @@ Therefore "\file\foo" is a valid file name, you don't have to type the
1240
  backslash twice.
1241
 
1242
  An exception is the '$' sign. It is a valid character in a file name. But
1243
- to avoid a file name like "$home" to be interpreted as an environment variable,
1244
- it needs to be preceded by a backslash. Therefore you need to use "/\$home"
1245
- for the file "$home" in the root directory. A few examples:
1246
 
1247
  FILE NAME INTERPRETED AS ~
1248
  $home expanded to value of environment var $home
 
1
+ *cmdline.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
 
162
  the last delete or yank
163
  '%' the current file name
164
  '#' the alternate file name
165
+ '*' the clipboard contents (X11: primary
166
+ selection)
167
  '+' the clipboard contents
168
  '/' the last search pattern
169
  ':' the last command-line
 
441
  <S-Tab> does not work everywhere.
442
  *c_CTRL-N*
443
  CTRL-N After using 'wildchar' which got multiple matches, go to next
444
+ match. Otherwise recall more recent command-line from
445
+ history.
446
  *c_CTRL-P*
447
  CTRL-P After using 'wildchar' which got multiple matches, go to
448
  previous match. Otherwise recall older command-line from
 
730
 
731
  *:_!*
732
  The '!' (bang) character after an Ex command makes the command behave in a
733
+ different way. The '!' should be placed immediately after the command,
734
+ without any blanks in between. If you insert blanks the '!' will be seen as
735
+ an argument for the command, which has a different meaning. For example:
736
  :w! name write the current buffer to file "name", overwriting
737
  any existing file
738
  :w !name send the current buffer as standard input to command
 
1107
  *filename-modifiers*
1108
  *:_%:* *::8* *::p* *::.* *::~* *::h* *::t* *::r* *::e* *::s* *::gs* *::S*
1109
  *%:8* *%:p* *%:.* *%:~* *%:h* *%:t* *%:r* *%:e* *%:s* *%:gs* *%:S*
1110
+ The file name modifiers can be used after "%", "#", "#n", "<cfile>",
1111
+ "<sfile>", "<afile>" or "<abuf>". They are also used with the |fnamemodify()|
1112
+ function.
1113
 
1114
  These modifiers can be given, in this order:
1115
  :p Make file name a full path. Must be the first modifier. Also
 
1162
  Substitute all occurrences of "pat" with "sub". Otherwise
1163
  this works like ":s".
1164
  :S Escape special characters for use with a shell command (see
1165
+ |shellescape()|). Must be the last one. Examples: >
1166
  :!dir <cfile>:S
1167
  :call system('chmod +w -- ' .. expand('%:S'))
1168
 
 
1243
  backslash twice.
1244
 
1245
  An exception is the '$' sign. It is a valid character in a file name. But
1246
+ to avoid a file name like "$home" to be interpreted as an environment
1247
+ variable, it needs to be preceded by a backslash. Therefore you need to use
1248
+ "/\$home" for the file "$home" in the root directory. A few examples:
1249
 
1250
  FILE NAME INTERPRETED AS ~
1251
  $home expanded to value of environment var $home
runtime/doc/debug.txt CHANGED
@@ -1,4 +1,4 @@
1
- *debug.txt* For Vim version 9.1. Last change: 2025 Aug 10
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
@@ -71,8 +71,8 @@ some steps to provide a useful bug report.
71
  3.1 GENERIC ~
72
 
73
  You must obtain the debugger symbols (PDB) file for your executable: gvim.pdb
74
- for gvim.exe, or vim.pdb for vim.exe. The PDB should be available from the
75
- same place that you obtained the executable. Be sure to use the PDB that
76
  matches the EXE (same date).
77
 
78
  If you built the executable yourself with the Microsoft Visual C++ compiler,
@@ -115,7 +115,7 @@ If you have a non-free version of Visual Studio, you can save a minidump via
115
  the Debug menu and send it with the bug report. A minidump is a small file
116
  (<100KB), which contains information about the state of your process.
117
  Visual C++ 2005 Express Edition cannot save minidumps and it cannot be
118
- installed as a just-in-time debugger. Use WinDbg, |debug-windbg|, if you
119
  need to save minidumps or you want a just-in-time (postmortem) debugger.
120
 
121
  *debug-windbg*
@@ -125,21 +125,21 @@ See |get-ms-debuggers| to obtain a copy of WinDbg.
125
 
126
  As with the Visual Studio IDE, you can attach WinDbg to a running Vim process.
127
  You can also have your system automatically invoke WinDbg as a postmortem
128
- debugger. To set WinDbg as your postmortem debugger, run "windbg -I".
129
 
130
- To attach WinDbg to a running Vim process, launch WinDbg. On the File menu,
131
- choose Attach to a Process. Select the Vim process and click OK.
132
 
133
  At this point, choose Symbol File Path on the File menu, and add the folder
134
- containing your Vim PDB to the sympath. If you have Vim source available,
135
- use Source File Path on the File menu. You can now open source files in WinDbg
136
- and set breakpoints, if you like. Reproduce your crash. WinDbg should open the
137
- source file at the point of the crash. Using the View menu, you can examine
138
- the call stack, local variables, watch windows, and so on.
139
 
140
  If WinDbg is your postmortem debugger, you do not need to attach WinDbg to
141
- your Vim process. Simply reproduce the crash and WinDbg will launch
142
- automatically. As above, set the Symbol File Path and the Source File Path.
143
 
144
  To save a minidump, type the following at the WinDbg command line: >
145
  .dump vim.dmp
@@ -150,11 +150,11 @@ To save a minidump, type the following at the WinDbg command line: >
150
  If you have a minidump file, you can open it in Visual Studio or in WinDbg.
151
 
152
  In Visual Studio 2005: on the File menu, choose Open, then Project/Solution.
153
- Navigate to the .dmp file and open it. Now press F5 to invoke the debugger.
154
  Follow the instructions in |debug-vs2005| to set the Symbol File Path.
155
 
156
- In WinDbg: choose Open Crash Dump on the File menu. Follow the instructions in
157
- |debug-windbg| to set the Symbol File Path.
158
 
159
  *get-ms-debuggers*
160
  3.5 Obtaining Microsoft Debugging Tools ~
 
1
+ *debug.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
 
71
  3.1 GENERIC ~
72
 
73
  You must obtain the debugger symbols (PDB) file for your executable: gvim.pdb
74
+ for gvim.exe, or vim.pdb for vim.exe. The PDB should be available from the
75
+ same place that you obtained the executable. Be sure to use the PDB that
76
  matches the EXE (same date).
77
 
78
  If you built the executable yourself with the Microsoft Visual C++ compiler,
 
115
  the Debug menu and send it with the bug report. A minidump is a small file
116
  (<100KB), which contains information about the state of your process.
117
  Visual C++ 2005 Express Edition cannot save minidumps and it cannot be
118
+ installed as a just-in-time debugger. Use WinDbg, |debug-windbg|, if you
119
  need to save minidumps or you want a just-in-time (postmortem) debugger.
120
 
121
  *debug-windbg*
 
125
 
126
  As with the Visual Studio IDE, you can attach WinDbg to a running Vim process.
127
  You can also have your system automatically invoke WinDbg as a postmortem
128
+ debugger. To set WinDbg as your postmortem debugger, run "windbg -I".
129
 
130
+ To attach WinDbg to a running Vim process, launch WinDbg. On the File menu,
131
+ choose Attach to a Process. Select the Vim process and click OK.
132
 
133
  At this point, choose Symbol File Path on the File menu, and add the folder
134
+ containing your Vim PDB to the sympath. If you have Vim source available,
135
+ use Source File Path on the File menu. You can now open source files in
136
+ WinDbg and set breakpoints, if you like. Reproduce your crash. WinDbg should
137
+ open the source file at the point of the crash. Using the View menu, you can
138
+ examine the call stack, local variables, watch windows, and so on.
139
 
140
  If WinDbg is your postmortem debugger, you do not need to attach WinDbg to
141
+ your Vim process. Simply reproduce the crash and WinDbg will launch
142
+ automatically. As above, set the Symbol File Path and the Source File Path.
143
 
144
  To save a minidump, type the following at the WinDbg command line: >
145
  .dump vim.dmp
 
150
  If you have a minidump file, you can open it in Visual Studio or in WinDbg.
151
 
152
  In Visual Studio 2005: on the File menu, choose Open, then Project/Solution.
153
+ Navigate to the .dmp file and open it. Now press F5 to invoke the debugger.
154
  Follow the instructions in |debug-vs2005| to set the Symbol File Path.
155
 
156
+ In WinDbg: choose Open Crash Dump on the File menu. Follow the instructions
157
+ in |debug-windbg| to set the Symbol File Path.
158
 
159
  *get-ms-debuggers*
160
  3.5 Obtaining Microsoft Debugging Tools ~
runtime/doc/debugger.txt CHANGED
@@ -1,4 +1,4 @@
1
- *debugger.txt* For Vim version 9.1. Last change: 2019 Dec 21
2
 
3
 
4
  VIM REFERENCE MANUAL by Gordon Prieur
@@ -51,9 +51,9 @@ Many debuggers mark specific lines by placing a small sign or color highlight
51
  on the line. The |:sign| command lets the debugger set this graphic mark. Some
52
  examples where this feature would be used would be a debugger showing an arrow
53
  representing the Program Counter (PC) of the program being debugged. Another
54
- example would be a small stop sign for a line with a breakpoint. These visible
55
- highlights let the user keep track of certain parts of the state of the
56
- debugger.
57
 
58
  This feature can be used with more than debuggers, too. An IPE can use a sign
59
  to highlight build errors, searched text, or other things. The sign feature
 
1
+ *debugger.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Gordon Prieur
 
51
  on the line. The |:sign| command lets the debugger set this graphic mark. Some
52
  examples where this feature would be used would be a debugger showing an arrow
53
  representing the Program Counter (PC) of the program being debugged. Another
54
+ example would be a small stop sign for a line with a breakpoint. These
55
+ visible highlights let the user keep track of certain parts of the state of
56
+ the debugger.
57
 
58
  This feature can be used with more than debuggers, too. An IPE can use a sign
59
  to highlight build errors, searched text, or other things. The sign feature
runtime/doc/diff.txt CHANGED
@@ -1,4 +1,4 @@
1
- *diff.txt* For Vim version 9.1. Last change: 2025 Sep 15
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
@@ -74,7 +74,8 @@ See `:diffoff` for an easy way to revert the options.
74
  The differences shown are actually the differences in the buffer. Thus if you
75
  make changes after loading a file, these will be included in the displayed
76
  diffs. You might have to do ":diffupdate" now and then, not all changes are
77
- immediately taken into account, especially when using an external diff command.
 
78
 
79
  In your .vimrc file you could do something special when Vim was started in
80
  diff mode. You could use a construct like this: >
@@ -292,7 +293,7 @@ that the buffers will be equal within the specified range.
292
 
293
  *do*
294
  [count]do Same as ":diffget" without range. The "o" stands for "obtain"
295
- ("dg" can't be used, it could be the start of "dgg"!). Note:
296
  this doesn't work in Visual mode.
297
  If you give a [count], it is used as the [bufspec] argument
298
  for ":diffget".
@@ -465,7 +466,7 @@ Also see 'diffopt' and the "diff" item of 'fillchars'.
465
 
466
  *diff-slow* *diff_translations*
467
  For very long lines, the diff syntax highlighting might be slow, especially
468
- since it tries to match all different kind of localisations. To disable
469
  localisations and speed up the syntax highlighting, set the global variable
470
  g:diff_translations to zero: >
471
 
@@ -547,7 +548,7 @@ The `redraw!` command may not be needed, depending on whether executing a
547
  shell command shows something on the display or not.
548
 
549
  If the 'diffexpr' expression starts with s: or |<SID>|, then it is replaced
550
- with the script ID (|local-function|). Example: >
551
  set diffexpr=s:MyDiffExpr()
552
  set diffexpr=<SID>SomeDiffExpr()
553
  Otherwise, the expression is evaluated in the context of the script where the
@@ -608,7 +609,7 @@ directory are accidentally patched. Vim will also delete files starting with
608
  v:fname_in and ending in ".rej" and ".orig".
609
 
610
  If the 'patchexpr' expression starts with s: or |<SID>|, then it is replaced
611
- with the script ID (|local-function|). Example: >
612
  set patchexpr=s:MyPatchExpr()
613
  set patchexpr=<SID>SomePatchExpr()
614
  Otherwise, the expression is evaluated in the context of the script where the
 
1
+ *diff.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
 
74
  The differences shown are actually the differences in the buffer. Thus if you
75
  make changes after loading a file, these will be included in the displayed
76
  diffs. You might have to do ":diffupdate" now and then, not all changes are
77
+ immediately taken into account, especially when using an external diff
78
+ command.
79
 
80
  In your .vimrc file you could do something special when Vim was started in
81
  diff mode. You could use a construct like this: >
 
293
 
294
  *do*
295
  [count]do Same as ":diffget" without range. The "o" stands for "obtain"
296
+ ("dg" can't be used, it could be the start of "dgg"!). Note:
297
  this doesn't work in Visual mode.
298
  If you give a [count], it is used as the [bufspec] argument
299
  for ":diffget".
 
466
 
467
  *diff-slow* *diff_translations*
468
  For very long lines, the diff syntax highlighting might be slow, especially
469
+ since it tries to match all different kind of localisations. To disable
470
  localisations and speed up the syntax highlighting, set the global variable
471
  g:diff_translations to zero: >
472
 
 
548
  shell command shows something on the display or not.
549
 
550
  If the 'diffexpr' expression starts with s: or |<SID>|, then it is replaced
551
+ with the script ID (|local-function|). Example: >
552
  set diffexpr=s:MyDiffExpr()
553
  set diffexpr=<SID>SomeDiffExpr()
554
  Otherwise, the expression is evaluated in the context of the script where the
 
609
  v:fname_in and ending in ".rej" and ".orig".
610
 
611
  If the 'patchexpr' expression starts with s: or |<SID>|, then it is replaced
612
+ with the script ID (|local-function|). Example: >
613
  set patchexpr=s:MyPatchExpr()
614
  set patchexpr=<SID>SomePatchExpr()
615
  Otherwise, the expression is evaluated in the context of the script where the
runtime/doc/digraph.txt CHANGED
@@ -1,4 +1,4 @@
1
- *digraph.txt* For Vim version 9.1. Last change: 2025 Aug 16
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
@@ -112,7 +112,7 @@ mode. After leaving the Insert mode everything is fine. On some Unix systems
112
  this means you have to define the environment-variable LC_CTYPE. If you are
113
  using csh, then put the following line in your .cshrc: >
114
  setenv LC_CTYPE en_US.utf8
115
- (or similar for a different language or country). The value must be a valid
116
  locale on your system, i.e. on Unix-like systems it must be present in the
117
  output of >
118
  locale -a
 
1
+ *digraph.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
 
112
  this means you have to define the environment-variable LC_CTYPE. If you are
113
  using csh, then put the following line in your .cshrc: >
114
  setenv LC_CTYPE en_US.utf8
115
+ (or similar for a different language or country). The value must be a valid
116
  locale on your system, i.e. on Unix-like systems it must be present in the
117
  output of >
118
  locale -a
runtime/doc/editing.txt CHANGED
@@ -1,4 +1,4 @@
1
- *editing.txt* For Vim version 9.1. Last change: 2025 Oct 11
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
@@ -134,11 +134,11 @@ set, Vim renames or copies the original file before it will be overwritten.
134
  You can use this file if you discover that you need the original file. See
135
  also the 'patchmode' option. The name of the backup file is normally the same
136
  as the original file with 'backupext' appended. The default "~" is a bit
137
- strange to avoid accidentally overwriting existing files. If you prefer ".bak"
138
- change the 'backupext' option. Extra dots are replaced with '_' on MS-Windows
139
- machines, when Vim has detected that an MS-DOS-like filesystem is being used
140
- (e.g., messydos or crossdos) or when the 'shortname' option is on. The
141
- backup file can be placed in another directory by setting 'backupdir'.
142
 
143
  *auto-shortname*
144
  Technical: On the Amiga you can use 30 characters for a file name. But on an
@@ -297,7 +297,7 @@ CTRL-^ Edit the alternate file. Mostly the alternate file is
297
  Mnemonic: "goto file".
298
  Uses the 'isfname' option to find out which characters
299
  are supposed to be in a file name. Trailing
300
- punctuation characters ".,:;!" are ignored. Escaped
301
  spaces "\ " are reduced to a single space.
302
  Uses the 'path' option as a list of directory names to
303
  look for the file. See the 'path' option for details
@@ -335,7 +335,7 @@ CTRL-^ Edit the alternate file. Mostly the alternate file is
335
  the file.
336
  The file name and the number must be separated by a
337
  non-filename (see 'isfname') and non-numeric
338
- character. " line " is also recognized, like it is
339
  used in the output of `:verbose command UserCmd`
340
  White space between the filename, the separator and
341
  the number are ignored.
@@ -387,7 +387,7 @@ is to use "path\[[]abc]", this matches the file "path\[abc]".
387
 
388
  *starstar-wildcard*
389
  Expanding "**" is possible on Unix, Win32, macOS and a few other systems (but
390
- it may depend on your 'shell' setting on Unix and macOS. It's known to work
391
  correctly for zsh; for bash this requires at least bash version >= 4.X).
392
  This allows searching a directory tree. This goes up to 100 directories deep.
393
  Note there are some commands where this works slightly differently, see
@@ -400,7 +400,7 @@ Finds files:
400
  a/b/c/d/ccc.txt ~
401
  When non-wildcard characters are used right before or after "**" these are
402
  only matched in the top directory. They are not used for directories further
403
- down in the tree. For example: >
404
  :n /usr/inc**/types.h
405
  Finds files:
406
  /usr/include/types.h ~
@@ -418,9 +418,9 @@ argument, for example: >
418
  Vim will run the command in backticks using the 'shell' and use the standard
419
  output as argument for the given Vim command (error messages from the shell
420
  command will be discarded).
421
- To see what shell command Vim is running, set the 'verbose' option to 4. When
422
  the shell command returns a non-zero exit code, an error message will be
423
- displayed and the Vim command will be aborted. To avoid this make the shell
424
  always return zero like so: >
425
  :next `find . -name ver\\*.c -print \|\| true`
426
 
@@ -669,7 +669,7 @@ list of the current window.
669
  [count] is used like with |:argadd|.
670
  If the current file cannot be |abandon|ed {name}s will
671
  still be added to the argument list, but won't be
672
- edited. No check for duplicates is done.
673
  Also see |++opt| and |+cmd|.
674
 
675
  :[count]arga[dd] {name} ... *:arga* *:argadd* *E479*
@@ -1429,7 +1429,7 @@ present in 'cpoptions' and "!" is not used in the command.
1429
  Also see |getcwd()|.
1430
  *:pwd-verbose*
1431
  When 'verbose' is non-zero, |:pwd| will also display
1432
- what scope the current directory was set. Example: >
1433
 
1434
  " Set by :cd
1435
  :verbose pwd
@@ -1459,8 +1459,8 @@ When a |:tcd| command has been used for a tab page, the specified directory
1459
  becomes the current directory for the current tab page and the current window.
1460
  The current directory of other tab pages is not affected. When jumping to
1461
  another tab page, the current directory is changed to the last specified local
1462
- directory for that tab page. If the current tab has no local current directory
1463
- the global current directory is used.
1464
 
1465
  When a |:cd| command is used, the current window and tab page will lose the
1466
  local current directory and will use the global current directory from now on.
@@ -1588,7 +1588,7 @@ To test for blowfish support you can use these conditions: >
1588
  has('crypt-blowfish')
1589
  has('crypt-blowfish2')
1590
  This works since Vim 7.4.1099 while blowfish support was added earlier.
1591
- Thus the condition failing doesn't mean blowfish is not supported. You can
1592
  test for blowfish with: >
1593
  v:version >= 703
1594
  And for blowfish2 with: >
@@ -1652,7 +1652,7 @@ Notes:
1652
  algorithm in detail.
1653
  - The implementation of 'cryptmethod' "blowfish" has a flaw. It is possible
1654
  to crack the first 64 bytes of a file and in some circumstances more of the
1655
- file. Use of it is not recommended, but it's still the strongest method
1656
  supported by Vim 7.3 and 7.4. The "zip" method is even weaker.
1657
  - Vim originates from the Netherlands. That is where the sources come from.
1658
  Thus the encryption code is not exported from the USA.
@@ -1744,24 +1744,24 @@ ask if you really want to overwrite the file:
1744
  WARNING: The file has been changed since reading it!!!
1745
  Do you really want to write to it (y/n)?
1746
 
1747
- If you hit 'y' Vim will continue writing the file. If you hit 'n' the write is
1748
- aborted. If you used ":wq" or "ZZ" Vim will not exit, you will get another
1749
  chance to write the file.
1750
 
1751
  The message would normally mean that somebody has written to the file after
1752
  the edit session started. This could be another person, in which case you
1753
  probably want to check if your changes to the file and the changes from the
1754
- other person should be merged. Write the file under another name and check for
1755
- differences (the "diff" program can be used for this).
1756
 
1757
  It is also possible that you modified the file yourself, from another edit
1758
  session or with another command (e.g., a filter command). Then you will know
1759
  which version of the file you want to keep.
1760
 
1761
  The accuracy of the time check depends on the filesystem. On Unix it is
1762
- usually sub-second. With old file systems and on MS-Windows it is normally one
1763
- second. Use `has('nanotime')` to check if sub-second time stamp checks are
1764
- available.
1765
 
1766
  There is one situation where you get the message while there is nothing wrong:
1767
  On a Win32 system on the day daylight saving time starts. There is something
@@ -1791,8 +1791,8 @@ There are three different types of searching:
1791
  - It ONLY matches directories.
1792
  - It matches up to 30 directories deep by default, so you can use it to
1793
  search an entire directory tree
1794
- - The maximum number of levels matched can be given by appending a number
1795
- to '**'.
1796
  Thus '/usr/**2' can match: >
1797
  /usr
1798
  /usr/include
 
1
+ *editing.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
 
134
  You can use this file if you discover that you need the original file. See
135
  also the 'patchmode' option. The name of the backup file is normally the same
136
  as the original file with 'backupext' appended. The default "~" is a bit
137
+ strange to avoid accidentally overwriting existing files. If you prefer
138
+ ".bak" change the 'backupext' option. Extra dots are replaced with '_' on
139
+ MS-Windows machines, when Vim has detected that an MS-DOS-like filesystem is
140
+ being used (e.g., messydos or crossdos) or when the 'shortname' option is on.
141
+ The backup file can be placed in another directory by setting 'backupdir'.
142
 
143
  *auto-shortname*
144
  Technical: On the Amiga you can use 30 characters for a file name. But on an
 
297
  Mnemonic: "goto file".
298
  Uses the 'isfname' option to find out which characters
299
  are supposed to be in a file name. Trailing
300
+ punctuation characters ".,:;!" are ignored. Escaped
301
  spaces "\ " are reduced to a single space.
302
  Uses the 'path' option as a list of directory names to
303
  look for the file. See the 'path' option for details
 
335
  the file.
336
  The file name and the number must be separated by a
337
  non-filename (see 'isfname') and non-numeric
338
+ character. " line " is also recognized, like it is
339
  used in the output of `:verbose command UserCmd`
340
  White space between the filename, the separator and
341
  the number are ignored.
 
387
 
388
  *starstar-wildcard*
389
  Expanding "**" is possible on Unix, Win32, macOS and a few other systems (but
390
+ it may depend on your 'shell' setting on Unix and macOS. It's known to work
391
  correctly for zsh; for bash this requires at least bash version >= 4.X).
392
  This allows searching a directory tree. This goes up to 100 directories deep.
393
  Note there are some commands where this works slightly differently, see
 
400
  a/b/c/d/ccc.txt ~
401
  When non-wildcard characters are used right before or after "**" these are
402
  only matched in the top directory. They are not used for directories further
403
+ down in the tree. For example: >
404
  :n /usr/inc**/types.h
405
  Finds files:
406
  /usr/include/types.h ~
 
418
  Vim will run the command in backticks using the 'shell' and use the standard
419
  output as argument for the given Vim command (error messages from the shell
420
  command will be discarded).
421
+ To see what shell command Vim is running, set the 'verbose' option to 4. When
422
  the shell command returns a non-zero exit code, an error message will be
423
+ displayed and the Vim command will be aborted. To avoid this make the shell
424
  always return zero like so: >
425
  :next `find . -name ver\\*.c -print \|\| true`
426
 
 
669
  [count] is used like with |:argadd|.
670
  If the current file cannot be |abandon|ed {name}s will
671
  still be added to the argument list, but won't be
672
+ edited. No check for duplicates is done.
673
  Also see |++opt| and |+cmd|.
674
 
675
  :[count]arga[dd] {name} ... *:arga* *:argadd* *E479*
 
1429
  Also see |getcwd()|.
1430
  *:pwd-verbose*
1431
  When 'verbose' is non-zero, |:pwd| will also display
1432
+ what scope the current directory was set. Example: >
1433
 
1434
  " Set by :cd
1435
  :verbose pwd
 
1459
  becomes the current directory for the current tab page and the current window.
1460
  The current directory of other tab pages is not affected. When jumping to
1461
  another tab page, the current directory is changed to the last specified local
1462
+ directory for that tab page. If the current tab has no local current
1463
+ directory the global current directory is used.
1464
 
1465
  When a |:cd| command is used, the current window and tab page will lose the
1466
  local current directory and will use the global current directory from now on.
 
1588
  has('crypt-blowfish')
1589
  has('crypt-blowfish2')
1590
  This works since Vim 7.4.1099 while blowfish support was added earlier.
1591
+ Thus the condition failing doesn't mean blowfish is not supported. You can
1592
  test for blowfish with: >
1593
  v:version >= 703
1594
  And for blowfish2 with: >
 
1652
  algorithm in detail.
1653
  - The implementation of 'cryptmethod' "blowfish" has a flaw. It is possible
1654
  to crack the first 64 bytes of a file and in some circumstances more of the
1655
+ file. Use of it is not recommended, but it's still the strongest method
1656
  supported by Vim 7.3 and 7.4. The "zip" method is even weaker.
1657
  - Vim originates from the Netherlands. That is where the sources come from.
1658
  Thus the encryption code is not exported from the USA.
 
1744
  WARNING: The file has been changed since reading it!!!
1745
  Do you really want to write to it (y/n)?
1746
 
1747
+ If you hit 'y' Vim will continue writing the file. If you hit 'n' the write
1748
+ is aborted. If you used ":wq" or "ZZ" Vim will not exit, you will get another
1749
  chance to write the file.
1750
 
1751
  The message would normally mean that somebody has written to the file after
1752
  the edit session started. This could be another person, in which case you
1753
  probably want to check if your changes to the file and the changes from the
1754
+ other person should be merged. Write the file under another name and check
1755
+ for differences (the "diff" program can be used for this).
1756
 
1757
  It is also possible that you modified the file yourself, from another edit
1758
  session or with another command (e.g., a filter command). Then you will know
1759
  which version of the file you want to keep.
1760
 
1761
  The accuracy of the time check depends on the filesystem. On Unix it is
1762
+ usually sub-second. With old file systems and on MS-Windows it is normally
1763
+ one second. Use `has('nanotime')` to check if sub-second time stamp checks
1764
+ are available.
1765
 
1766
  There is one situation where you get the message while there is nothing wrong:
1767
  On a Win32 system on the day daylight saving time starts. There is something
 
1791
  - It ONLY matches directories.
1792
  - It matches up to 30 directories deep by default, so you can use it to
1793
  search an entire directory tree
1794
+ - The maximum number of levels matched can be given by appending a
1795
+ number to '**'.
1796
  Thus '/usr/**2' can match: >
1797
  /usr
1798
  /usr/include
runtime/doc/eval.txt CHANGED
@@ -1,4 +1,4 @@
1
- *eval.txt* For Vim version 9.1. Last change: 2025 Sep 25
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
@@ -86,7 +86,7 @@ Job Used for a job, see |job_start()|. *Job* *Jobs*
86
 
87
  Channel Used for a channel, see |ch_open()|. *Channel* *Channels*
88
 
89
- Blob Binary Large Object. Stores any sequence of bytes. See |Blob|
90
  for details
91
  Example: 0zFF00ED015DAF
92
  0z is an empty Blob.
@@ -1020,7 +1020,7 @@ Blob modification ~
1020
  To change a specific byte of a blob use |:let| this way: >
1021
  :let blob[4] = 0x44
1022
 
1023
- When the index is just one beyond the end of the Blob, it is appended. Any
1024
  higher index is an error.
1025
 
1026
  To change a sequence of bytes the [:] notation can be used: >
@@ -1536,8 +1536,8 @@ byte under the cursor: >
1536
 
1537
  In |Vim9| script: *E1147* *E1148*
1538
  If expr10 is a String this results in a String that contains the expr1'th
1539
- single character (including any composing characters) from expr10. To use byte
1540
- indexes use |strpart()|.
1541
 
1542
  Index zero gives the first byte or character. Careful: text column numbers
1543
  start with one!
@@ -1595,7 +1595,7 @@ Examples: >
1595
  *slice*
1596
  If expr10 is a |List| this results in a new |List| with the items indicated by
1597
  the indexes expr1a and expr1b. This works like with a String, as explained
1598
- just above. Also see |sublist| below. Examples: >
1599
  :let l = mylist[:3] " first four items
1600
  :let l = mylist[4:4] " List with one item
1601
  :let l = mylist[:] " shallow copy of a List
@@ -1786,8 +1786,8 @@ A string constant accepts these special characters:
1786
  Don't use <Char-xxxx> to get a UTF-8 character, use \uxxxx as
1787
  mentioned above.
1788
  \<*xxx> Like \<xxx> but prepends a modifier instead of including it in the
1789
- character. E.g. "\<C-w>" is one character 0x17 while "\<*C-w>" is four
1790
- bytes: 3 for the CTRL modifier and then character "W".
1791
 
1792
  Note that "\xff" is stored as the byte 255, which may be invalid in some
1793
  encodings. Use "\u00ff" to store character 255 according to the current value
@@ -2185,7 +2185,7 @@ variables for each buffer. Use local buffer variables instead |b:var|.
2185
  PREDEFINED VIM VARIABLES *vim-variable* *v:var* *v:*
2186
  *E963* *E1063*
2187
  Most variables are read-only, when a variable can be set by the user, it will
2188
- be mentioned at the variable description below. The type cannot be changed.
2189
 
2190
  *v:argv* *argv-variable*
2191
  v:argv The command line arguments Vim was invoked with. This is a
@@ -2198,11 +2198,11 @@ v:beval_col The number of the column, over which the mouse pointer is.
2198
  Only valid while evaluating the 'balloonexpr' option.
2199
 
2200
  *v:beval_bufnr* *beval_bufnr-variable*
2201
- v:beval_bufnr The number of the buffer, over which the mouse pointer is. Only
2202
- valid while evaluating the 'balloonexpr' option.
2203
 
2204
  *v:beval_lnum* *beval_lnum-variable*
2205
- v:beval_lnum The number of the line, over which the mouse pointer is. Only
2206
  valid while evaluating the 'balloonexpr' option.
2207
 
2208
  *v:beval_text* *beval_text-variable*
@@ -2215,9 +2215,9 @@ v:beval_text The text under or after the mouse pointer. Usually a word as
2215
  Only valid while evaluating the 'balloonexpr' option.
2216
 
2217
  *v:beval_winnr* *beval_winnr-variable*
2218
- v:beval_winnr The number of the window, over which the mouse pointer is. Only
2219
- valid while evaluating the 'balloonexpr' option. The first
2220
- window has number zero (unlike most other places where a
2221
  window gets a number).
2222
 
2223
  *v:beval_winid* *beval_winid-variable*
@@ -2280,8 +2280,8 @@ v:collate The current locale setting for collation order of the runtime
2280
  See |multi-lang|.
2281
 
2282
  *v:colornames*
2283
- v:colornames A dictionary that maps color names to hex color strings. These
2284
- color names can be used with the |highlight-guifg|,
2285
  |highlight-guibg|, and |highlight-guisp| parameters.
2286
 
2287
  The key values in the dictionary (the color names) should be
@@ -2289,20 +2289,20 @@ v:colornames A dictionary that maps color names to hex color strings. These
2289
  name.
2290
 
2291
  Updating an entry in v:colornames has no immediate effect on
2292
- the syntax highlighting. The highlight commands (probably in a
2293
- colorscheme script) need to be re-evaluated in order to use
2294
- the updated color values. For example: >
2295
 
2296
  :let v:colornames['fuscia'] = '#cf3ab4'
2297
  :let v:colornames['mauve'] = '#915f6d'
2298
  :highlight Normal guifg=fuscia guibg=mauve
2299
  <
2300
  This cannot be used to override the |cterm-colors| but it can
2301
- be used to override other colors. For example, the X11 colors
2302
  defined in the `colors/lists/default.vim` (previously defined
2303
- in |rgb.txt|). When defining new color names in a plugin, the
2304
  recommended practice is to set a color entry only when it does
2305
- not already exist. For example: >
2306
 
2307
  :call extend(v:colornames, {
2308
  \ 'fuscia': '#cf3ab4',
@@ -2310,20 +2310,20 @@ v:colornames A dictionary that maps color names to hex color strings. These
2310
  \ }, 'keep')
2311
  <
2312
  Using |extend()| with the 'keep' option updates each color only
2313
- if it did not exist in |v:colornames|. Doing so allows the
2314
  user to choose the precise color value for a common name
2315
  by setting it in their |.vimrc|.
2316
 
2317
  It is possible to remove entries from this dictionary but
2318
  doing so is NOT recommended, because it is disruptive to
2319
- other scripts. It is also unlikely to achieve the desired
2320
  result because the |:colorscheme| and |:highlight| commands
2321
  will both automatically load all `colors/lists/default.vim`
2322
  color scripts.
2323
 
2324
  You can make changes to that file, but make sure to add new
2325
- keys instead of updating existing ones, otherwise Vim will skip
2326
- loading the file (thinking it hasn't been changed).
2327
 
2328
  *v:completed_item* *completed_item-variable*
2329
  v:completed_item
@@ -2426,7 +2426,7 @@ v:exception The value of the exception most recently caught and not
2426
  < Output: "caught oops".
2427
 
2428
  *v:false* *false-variable*
2429
- v:false A Number with value zero. Used to put "false" in JSON. See
2430
  |json_encode()|.
2431
  When used as a string this evaluates to "v:false". >
2432
  echo v:false
@@ -2519,7 +2519,7 @@ v:foldstart Used for 'foldtext': first line of closed fold.
2519
  *v:hlsearch* *hlsearch-variable*
2520
  v:hlsearch Variable that indicates whether search highlighting is on.
2521
  Setting it makes sense only if 'hlsearch' is enabled which
2522
- requires |+extra_search|. Setting this variable to zero acts
2523
  like the |:nohlsearch| command, setting it to one acts like >
2524
  let &hlsearch = &hlsearch
2525
  < Note that the value is restored when returning from a
@@ -2587,7 +2587,7 @@ v:mouse_col Column number for a mouse click obtained with |getchar()|.
2587
  value is zero when there was no mouse button click.
2588
 
2589
  *v:none* *none-variable* *None*
2590
- v:none An empty String. Used to put an empty item in JSON. See
2591
  |json_encode()|.
2592
  This can also be used as a function argument to use the
2593
  default value, see |none-function_argument|.
@@ -2601,7 +2601,7 @@ v:none An empty String. Used to put an empty item in JSON. See
2601
  an error. Instead, use `is v:none` and `isnot v:none` .
2602
 
2603
  *v:null* *null-variable*
2604
- v:null An empty String. Used to put "null" in JSON. See
2605
  |json_encode()|.
2606
  When used as a number this evaluates to zero.
2607
  When used as a string this evaluates to "v:null". >
@@ -2637,27 +2637,27 @@ v:oldfiles List of file names that is loaded from the |viminfo| file on
2637
  {only when compiled with the |+viminfo| feature}
2638
 
2639
  *v:option_new*
2640
- v:option_new New value of the option. Valid while executing an |OptionSet|
2641
  autocommand.
2642
  *v:option_old*
2643
- v:option_old Old value of the option. Valid while executing an |OptionSet|
2644
- autocommand. Depending on the command used for setting and the
2645
- kind of option this is either the local old value or the
2646
  global old value.
2647
  *v:option_oldlocal*
2648
  v:option_oldlocal
2649
- Old local value of the option. Valid while executing an
2650
  |OptionSet| autocommand.
2651
  *v:option_oldglobal*
2652
  v:option_oldglobal
2653
- Old global value of the option. Valid while executing an
2654
  |OptionSet| autocommand.
2655
  *v:option_type*
2656
- v:option_type Scope of the set command. Valid while executing an
2657
- |OptionSet| autocommand. Can be either "global" or "local"
2658
  *v:option_command*
2659
  v:option_command
2660
- Command used to set the option. Valid while executing an
2661
  |OptionSet| autocommand.
2662
  value option was set via ~
2663
  "setlocal" |:setlocal| or ":let l:xxx"
@@ -2704,7 +2704,7 @@ v:progpath Contains the command with which Vim was invoked, in a form
2704
  To get the full path use: >
2705
  echo exepath(v:progpath)
2706
  < If the command has a relative path it will be expanded to the
2707
- full path, so that it still works after `:cd`. Thus starting
2708
  "./vim" results in "/home/user/path/to/vim/src/vim".
2709
  On Linux and other systems it will always be the full path.
2710
  On Mac it may just be "vim" and using exepath() as mentioned
@@ -2871,9 +2871,9 @@ v:termresponse The escape sequence returned by the terminal for the |t_RV|
2871
  terminal. The TermResponseAll event is also fired, with
2872
  <amatch> set to "version". You can use |terminalprops()| to
2873
  see what Vim figured out about the terminal.
2874
- The response from a new xterm is: "<Esc>[> Pp ; Pv ; Pc c". Pp
2875
- is the terminal type: 0 for vt100 and 1 for vt220. Pv is the
2876
- patch level (since this was introduced in patch 95, it's
2877
  always 95 or higher). Pc is always zero.
2878
  If Pv is 141 or higher then Vim will try to request terminal
2879
  codes. This only works with xterm |xterm-codes|.
@@ -2882,7 +2882,7 @@ v:termresponse The escape sequence returned by the terminal for the |t_RV|
2882
  *v:termblinkresp* *termblinkresp-variable*
2883
  v:termblinkresp The escape sequence returned by the terminal for the |t_RC|
2884
  termcap entry. This is used to find out whether the terminal
2885
- cursor is blinking. This is used by |term_getcursor()|. When
2886
  this variable is set, the TermResponseAll autocommand event is
2887
  fired, with <amatch> set to "cursorblink".
2888
 
@@ -2951,7 +2951,7 @@ v:throwpoint The point where the exception most recently caught and not
2951
  < Output: "Exception from test.vim, line 2"
2952
 
2953
  *v:true* *true-variable*
2954
- v:true A Number with value one. Used to put "true" in JSON. See
2955
  |json_encode()|.
2956
  When used as a string this evaluates to "v:true". >
2957
  echo v:true
@@ -2991,7 +2991,8 @@ v:vim_did_enter Zero until most of startup is done. It is set to one just
2991
  before |VimEnter| autocommands are triggered.
2992
 
2993
  *v:warningmsg* *warningmsg-variable*
2994
- v:warningmsg Last given warning message. It's allowed to set this variable.
 
2995
 
2996
  *v:wayland_display* *wayland_display-variable*
2997
  v:wayland_display
@@ -3289,7 +3290,8 @@ text...
3289
  END
3290
  < There can be multiple Vim expressions in a single line
3291
  but an expression cannot span multiple lines. If any
3292
- expression evaluation fails, then the assignment fails.
 
3293
 
3294
  {endmarker} must not contain white space.
3295
  {endmarker} cannot start with a lower case character.
@@ -5212,7 +5214,7 @@ $VIMRUNTIME/plugin/openPlugin.vim
5212
  dist#vim9#Open(file: string) ~
5213
 
5214
  Opens `path` with the system default handler (macOS `open`, Windows
5215
- `explorer.exe`, Linux `xdg-open`, …). If the variable |g:Openprg| exists the
5216
  string specified in the variable is used instead.
5217
 
5218
  The |:Open| user command uses file completion for its argument.
@@ -5224,11 +5226,11 @@ This function is by default called using the gx mapping. In visual mode
5224
  tries to open the visually selected text.
5225
 
5226
  Associated setting variables:
5227
- `g:gx_word`: control how gx picks up the text under the cursor. Uses
5228
  `g:netrw_gx` as a fallback for backward compatibility.
5229
  (default: `<cfile>`)
5230
 
5231
- `g:nogx`: disables the gx mapping. Uses `g:netrw_nogx` as a fallback for
5232
  backward compatibility. (default: `unset`)
5233
 
5234
 
@@ -5242,7 +5244,7 @@ Usage: >vim
5242
  *dist#vim9#Launch()* *:Launch*
5243
  dist#vim9#Launch(file: string) ~
5244
 
5245
- Launches <args> with the appropriate system programs. Intended for launching
5246
  GUI programs within Vim.
5247
 
5248
  The |:Launch| user command uses shell completion for its first argument.
 
1
+ *eval.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
 
86
 
87
  Channel Used for a channel, see |ch_open()|. *Channel* *Channels*
88
 
89
+ Blob Binary Large Object. Stores any sequence of bytes. See |Blob|
90
  for details
91
  Example: 0zFF00ED015DAF
92
  0z is an empty Blob.
 
1020
  To change a specific byte of a blob use |:let| this way: >
1021
  :let blob[4] = 0x44
1022
 
1023
+ When the index is just one beyond the end of the Blob, it is appended. Any
1024
  higher index is an error.
1025
 
1026
  To change a sequence of bytes the [:] notation can be used: >
 
1536
 
1537
  In |Vim9| script: *E1147* *E1148*
1538
  If expr10 is a String this results in a String that contains the expr1'th
1539
+ single character (including any composing characters) from expr10. To use
1540
+ byte indexes use |strpart()|.
1541
 
1542
  Index zero gives the first byte or character. Careful: text column numbers
1543
  start with one!
 
1595
  *slice*
1596
  If expr10 is a |List| this results in a new |List| with the items indicated by
1597
  the indexes expr1a and expr1b. This works like with a String, as explained
1598
+ just above. Also see |sublist| below. Examples: >
1599
  :let l = mylist[:3] " first four items
1600
  :let l = mylist[4:4] " List with one item
1601
  :let l = mylist[:] " shallow copy of a List
 
1786
  Don't use <Char-xxxx> to get a UTF-8 character, use \uxxxx as
1787
  mentioned above.
1788
  \<*xxx> Like \<xxx> but prepends a modifier instead of including it in the
1789
+ character. E.g. "\<C-w>" is one character 0x17 while "\<*C-w>" is
1790
+ four bytes: 3 for the CTRL modifier and then character "W".
1791
 
1792
  Note that "\xff" is stored as the byte 255, which may be invalid in some
1793
  encodings. Use "\u00ff" to store character 255 according to the current value
 
2185
  PREDEFINED VIM VARIABLES *vim-variable* *v:var* *v:*
2186
  *E963* *E1063*
2187
  Most variables are read-only, when a variable can be set by the user, it will
2188
+ be mentioned at the variable description below. The type cannot be changed.
2189
 
2190
  *v:argv* *argv-variable*
2191
  v:argv The command line arguments Vim was invoked with. This is a
 
2198
  Only valid while evaluating the 'balloonexpr' option.
2199
 
2200
  *v:beval_bufnr* *beval_bufnr-variable*
2201
+ v:beval_bufnr The number of the buffer, over which the mouse pointer is.
2202
+ Only valid while evaluating the 'balloonexpr' option.
2203
 
2204
  *v:beval_lnum* *beval_lnum-variable*
2205
+ v:beval_lnum The number of the line, over which the mouse pointer is. Only
2206
  valid while evaluating the 'balloonexpr' option.
2207
 
2208
  *v:beval_text* *beval_text-variable*
 
2215
  Only valid while evaluating the 'balloonexpr' option.
2216
 
2217
  *v:beval_winnr* *beval_winnr-variable*
2218
+ v:beval_winnr The number of the window, over which the mouse pointer is.
2219
+ Only valid while evaluating the 'balloonexpr' option. The
2220
+ first window has number zero (unlike most other places where a
2221
  window gets a number).
2222
 
2223
  *v:beval_winid* *beval_winid-variable*
 
2280
  See |multi-lang|.
2281
 
2282
  *v:colornames*
2283
+ v:colornames A dictionary that maps color names to hex color strings.
2284
+ These color names can be used with the |highlight-guifg|,
2285
  |highlight-guibg|, and |highlight-guisp| parameters.
2286
 
2287
  The key values in the dictionary (the color names) should be
 
2289
  name.
2290
 
2291
  Updating an entry in v:colornames has no immediate effect on
2292
+ the syntax highlighting. The highlight commands (probably in
2293
+ a colorscheme script) need to be re-evaluated in order to use
2294
+ the updated color values. For example: >
2295
 
2296
  :let v:colornames['fuscia'] = '#cf3ab4'
2297
  :let v:colornames['mauve'] = '#915f6d'
2298
  :highlight Normal guifg=fuscia guibg=mauve
2299
  <
2300
  This cannot be used to override the |cterm-colors| but it can
2301
+ be used to override other colors. For example, the X11 colors
2302
  defined in the `colors/lists/default.vim` (previously defined
2303
+ in |rgb.txt|). When defining new color names in a plugin, the
2304
  recommended practice is to set a color entry only when it does
2305
+ not already exist. For example: >
2306
 
2307
  :call extend(v:colornames, {
2308
  \ 'fuscia': '#cf3ab4',
 
2310
  \ }, 'keep')
2311
  <
2312
  Using |extend()| with the 'keep' option updates each color only
2313
+ if it did not exist in |v:colornames|. Doing so allows the
2314
  user to choose the precise color value for a common name
2315
  by setting it in their |.vimrc|.
2316
 
2317
  It is possible to remove entries from this dictionary but
2318
  doing so is NOT recommended, because it is disruptive to
2319
+ other scripts. It is also unlikely to achieve the desired
2320
  result because the |:colorscheme| and |:highlight| commands
2321
  will both automatically load all `colors/lists/default.vim`
2322
  color scripts.
2323
 
2324
  You can make changes to that file, but make sure to add new
2325
+ keys instead of updating existing ones, otherwise Vim will
2326
+ skip loading the file (thinking it hasn't been changed).
2327
 
2328
  *v:completed_item* *completed_item-variable*
2329
  v:completed_item
 
2426
  < Output: "caught oops".
2427
 
2428
  *v:false* *false-variable*
2429
+ v:false A Number with value zero. Used to put "false" in JSON. See
2430
  |json_encode()|.
2431
  When used as a string this evaluates to "v:false". >
2432
  echo v:false
 
2519
  *v:hlsearch* *hlsearch-variable*
2520
  v:hlsearch Variable that indicates whether search highlighting is on.
2521
  Setting it makes sense only if 'hlsearch' is enabled which
2522
+ requires |+extra_search|. Setting this variable to zero acts
2523
  like the |:nohlsearch| command, setting it to one acts like >
2524
  let &hlsearch = &hlsearch
2525
  < Note that the value is restored when returning from a
 
2587
  value is zero when there was no mouse button click.
2588
 
2589
  *v:none* *none-variable* *None*
2590
+ v:none An empty String. Used to put an empty item in JSON. See
2591
  |json_encode()|.
2592
  This can also be used as a function argument to use the
2593
  default value, see |none-function_argument|.
 
2601
  an error. Instead, use `is v:none` and `isnot v:none` .
2602
 
2603
  *v:null* *null-variable*
2604
+ v:null An empty String. Used to put "null" in JSON. See
2605
  |json_encode()|.
2606
  When used as a number this evaluates to zero.
2607
  When used as a string this evaluates to "v:null". >
 
2637
  {only when compiled with the |+viminfo| feature}
2638
 
2639
  *v:option_new*
2640
+ v:option_new New value of the option. Valid while executing an |OptionSet|
2641
  autocommand.
2642
  *v:option_old*
2643
+ v:option_old Old value of the option. Valid while executing an |OptionSet|
2644
+ autocommand. Depending on the command used for setting and
2645
+ the kind of option this is either the local old value or the
2646
  global old value.
2647
  *v:option_oldlocal*
2648
  v:option_oldlocal
2649
+ Old local value of the option. Valid while executing an
2650
  |OptionSet| autocommand.
2651
  *v:option_oldglobal*
2652
  v:option_oldglobal
2653
+ Old global value of the option. Valid while executing an
2654
  |OptionSet| autocommand.
2655
  *v:option_type*
2656
+ v:option_type Scope of the set command. Valid while executing an
2657
+ |OptionSet| autocommand. Can be either "global" or "local"
2658
  *v:option_command*
2659
  v:option_command
2660
+ Command used to set the option. Valid while executing an
2661
  |OptionSet| autocommand.
2662
  value option was set via ~
2663
  "setlocal" |:setlocal| or ":let l:xxx"
 
2704
  To get the full path use: >
2705
  echo exepath(v:progpath)
2706
  < If the command has a relative path it will be expanded to the
2707
+ full path, so that it still works after `:cd`. Thus starting
2708
  "./vim" results in "/home/user/path/to/vim/src/vim".
2709
  On Linux and other systems it will always be the full path.
2710
  On Mac it may just be "vim" and using exepath() as mentioned
 
2871
  terminal. The TermResponseAll event is also fired, with
2872
  <amatch> set to "version". You can use |terminalprops()| to
2873
  see what Vim figured out about the terminal.
2874
+ The response from a new xterm is: "<Esc>[> Pp ; Pv ; Pc c".
2875
+ Pp is the terminal type: 0 for vt100 and 1 for vt220. Pv is
2876
+ the patch level (since this was introduced in patch 95, it's
2877
  always 95 or higher). Pc is always zero.
2878
  If Pv is 141 or higher then Vim will try to request terminal
2879
  codes. This only works with xterm |xterm-codes|.
 
2882
  *v:termblinkresp* *termblinkresp-variable*
2883
  v:termblinkresp The escape sequence returned by the terminal for the |t_RC|
2884
  termcap entry. This is used to find out whether the terminal
2885
+ cursor is blinking. This is used by |term_getcursor()|. When
2886
  this variable is set, the TermResponseAll autocommand event is
2887
  fired, with <amatch> set to "cursorblink".
2888
 
 
2951
  < Output: "Exception from test.vim, line 2"
2952
 
2953
  *v:true* *true-variable*
2954
+ v:true A Number with value one. Used to put "true" in JSON. See
2955
  |json_encode()|.
2956
  When used as a string this evaluates to "v:true". >
2957
  echo v:true
 
2991
  before |VimEnter| autocommands are triggered.
2992
 
2993
  *v:warningmsg* *warningmsg-variable*
2994
+ v:warningmsg Last given warning message. It's allowed to set this
2995
+ variable.
2996
 
2997
  *v:wayland_display* *wayland_display-variable*
2998
  v:wayland_display
 
3290
  END
3291
  < There can be multiple Vim expressions in a single line
3292
  but an expression cannot span multiple lines. If any
3293
+ expression evaluation fails, then the assignment
3294
+ fails.
3295
 
3296
  {endmarker} must not contain white space.
3297
  {endmarker} cannot start with a lower case character.
 
5214
  dist#vim9#Open(file: string) ~
5215
 
5216
  Opens `path` with the system default handler (macOS `open`, Windows
5217
+ `explorer.exe`, Linux `xdg-open`, …). If the variable |g:Openprg| exists the
5218
  string specified in the variable is used instead.
5219
 
5220
  The |:Open| user command uses file completion for its argument.
 
5226
  tries to open the visually selected text.
5227
 
5228
  Associated setting variables:
5229
+ `g:gx_word`: control how gx picks up the text under the cursor. Uses
5230
  `g:netrw_gx` as a fallback for backward compatibility.
5231
  (default: `<cfile>`)
5232
 
5233
+ `g:nogx`: disables the gx mapping. Uses `g:netrw_nogx` as a fallback for
5234
  backward compatibility. (default: `unset`)
5235
 
5236
 
 
5244
  *dist#vim9#Launch()* *:Launch*
5245
  dist#vim9#Launch(file: string) ~
5246
 
5247
+ Launches <args> with the appropriate system programs. Intended for launching
5248
  GUI programs within Vim.
5249
 
5250
  The |:Launch| user command uses shell completion for its first argument.
runtime/doc/filetype.txt CHANGED
@@ -1,4 +1,4 @@
1
- *filetype.txt* For Vim version 9.1. Last change: 2025 Sep 24
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
@@ -530,12 +530,13 @@ g:changelog_new_date_format
530
  %% insert a single '%' character
531
  %d insert the date from above
532
  %u insert the user from above
533
- %p insert result of b:changelog_entry_prefix
 
534
  %c where to position cursor when done
535
- The default is "%d %u\n\n\t* %p%c\n\n", which produces
536
- something like (| is where cursor will be, unless at
537
- the start of the line where it denotes the beginning
538
- of the line) >
539
  |2003-01-14 Full Name <user@host>
540
  |
541
  | * prefix|
@@ -544,7 +545,8 @@ g:changelog_new_entry_format
544
  The format used when creating a new entry.
545
  The following table describes special tokens in the
546
  string:
547
- %p insert result of b:changelog_entry_prefix
 
548
  %c where to position cursor when done
549
  The default is "\t*%c", which produces something
550
  similar to >
@@ -604,8 +606,9 @@ Options:
604
  'expandtab' is switched on to avoid tabs as required by the Fortran
605
  standards unless the user has set fortran_have_tabs in .vimrc.
606
  'textwidth' is set to 80 for fixed source format whereas it is set to 132
607
- for free source format. Setting the fortran_extended_line_length
608
- variable increases the width to 132 for fixed source format.
 
609
  'formatoptions' is set to break code and comment lines and to preserve long
610
  lines. You can format comments with |gq|.
611
  For further discussion of fortran_have_tabs and the method used for the
@@ -889,7 +892,7 @@ not running man {name} if no page is found, then use this: >
889
  <
890
  *g:ft_man_implementation*
891
  The completion for the :Man command tries to guess which implementation of man
892
- the system has. If it guesses wrong, you can set g:ft_man_implementation to
893
  one of these values:
894
  'man-db' https://man-db.nongnu.org/
895
  '' Unknown, fall back to completing shell commands
@@ -969,27 +972,27 @@ QF QUICKFIX *qf.vim* *ft-qf-plugin*
969
  The "qf" filetype is used for the quickfix window, see |quickfix-window|.
970
 
971
  The quickfix filetype plugin includes configuration for displaying the command
972
- that produced the quickfix list in the |status-line|. To disable this setting,
973
  configure as follows: >
974
  :let g:qf_disable_statusline = 1
975
 
976
 
977
  R MARKDOWN *ft-rmd-plugin*
978
 
979
- By default ftplugin/html.vim is not sourced. If you want it sourced, add to
980
  your |vimrc|: >
981
  let rmd_include_html = 1
982
 
983
  The 'formatexpr' option is set dynamically with different values for R code
984
- and for Markdown code. If you prefer that 'formatexpr' is not set, add to your
985
- |vimrc|: >
986
  let rmd_dynamic_comments = 0
987
 
988
 
989
  R RESTRUCTURED TEXT *ft-rrst-plugin*
990
 
991
  The 'formatexpr' option is set dynamically with different values for R code
992
- and for ReStructured text. If you prefer that 'formatexpr' is not set, add to
993
  your |vimrc|: >
994
  let rrst_dynamic_comments = 0
995
 
@@ -1006,7 +1009,7 @@ To enable this behavior, set the following variable in your vimrc: >
1006
  RNOWEB *ft-rnoweb-plugin*
1007
 
1008
  The 'formatexpr' option is set dynamically with different values for R code
1009
- and for LaTeX code. If you prefer that 'formatexpr' is not set, add to your
1010
  |vimrc|: >
1011
  let rnw_dynamic_comments = 0
1012
 
@@ -1100,8 +1103,8 @@ To disable this behavior, set |g:zig_recommended_style| to 0: >
1100
  let g:zig_recommended_style = 0
1101
  <
1102
  *g:zig_std_dir*
1103
- The path to the Zig standard library. The Zig |ftplugin| reads |g:zig_std_dir|
1104
- and appends it to the 'path' for Zig files. Where the Zig standard library
1105
  is located is system and installation method dependent.
1106
 
1107
  One can automatically set |g:zig_std_dir| using `zig env`: >
 
1
+ *filetype.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
 
530
  %% insert a single '%' character
531
  %d insert the date from above
532
  %u insert the user from above
533
+ %p insert result of
534
+ b:changelog_entry_prefix
535
  %c where to position cursor when done
536
+ The default is "%d %u\n\n\t* %p%c\n\n", which
537
+ produces something like (| is where cursor will be,
538
+ unless at the start of the line where it denotes the
539
+ beginning of the line) >
540
  |2003-01-14 Full Name <user@host>
541
  |
542
  | * prefix|
 
545
  The format used when creating a new entry.
546
  The following table describes special tokens in the
547
  string:
548
+ %p insert result of
549
+ b:changelog_entry_prefix
550
  %c where to position cursor when done
551
  The default is "\t*%c", which produces something
552
  similar to >
 
606
  'expandtab' is switched on to avoid tabs as required by the Fortran
607
  standards unless the user has set fortran_have_tabs in .vimrc.
608
  'textwidth' is set to 80 for fixed source format whereas it is set to 132
609
+ for free source format. Setting the
610
+ fortran_extended_line_length variable increases the width to
611
+ 132 for fixed source format.
612
  'formatoptions' is set to break code and comment lines and to preserve long
613
  lines. You can format comments with |gq|.
614
  For further discussion of fortran_have_tabs and the method used for the
 
892
  <
893
  *g:ft_man_implementation*
894
  The completion for the :Man command tries to guess which implementation of man
895
+ the system has. If it guesses wrong, you can set g:ft_man_implementation to
896
  one of these values:
897
  'man-db' https://man-db.nongnu.org/
898
  '' Unknown, fall back to completing shell commands
 
972
  The "qf" filetype is used for the quickfix window, see |quickfix-window|.
973
 
974
  The quickfix filetype plugin includes configuration for displaying the command
975
+ that produced the quickfix list in the |status-line|. To disable this setting,
976
  configure as follows: >
977
  :let g:qf_disable_statusline = 1
978
 
979
 
980
  R MARKDOWN *ft-rmd-plugin*
981
 
982
+ By default ftplugin/html.vim is not sourced. If you want it sourced, add to
983
  your |vimrc|: >
984
  let rmd_include_html = 1
985
 
986
  The 'formatexpr' option is set dynamically with different values for R code
987
+ and for Markdown code. If you prefer that 'formatexpr' is not set, add to
988
+ your |vimrc|: >
989
  let rmd_dynamic_comments = 0
990
 
991
 
992
  R RESTRUCTURED TEXT *ft-rrst-plugin*
993
 
994
  The 'formatexpr' option is set dynamically with different values for R code
995
+ and for ReStructured text. If you prefer that 'formatexpr' is not set, add to
996
  your |vimrc|: >
997
  let rrst_dynamic_comments = 0
998
 
 
1009
  RNOWEB *ft-rnoweb-plugin*
1010
 
1011
  The 'formatexpr' option is set dynamically with different values for R code
1012
+ and for LaTeX code. If you prefer that 'formatexpr' is not set, add to your
1013
  |vimrc|: >
1014
  let rnw_dynamic_comments = 0
1015
 
 
1103
  let g:zig_recommended_style = 0
1104
  <
1105
  *g:zig_std_dir*
1106
+ The path to the Zig standard library. The Zig |ftplugin| reads |g:zig_std_dir|
1107
+ and appends it to the 'path' for Zig files. Where the Zig standard library
1108
  is located is system and installation method dependent.
1109
 
1110
  One can automatically set |g:zig_std_dir| using `zig env`: >
runtime/doc/gui.txt CHANGED
@@ -1,4 +1,4 @@
1
- *gui.txt* For Vim version 9.1. Last change: 2025 Aug 10
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
@@ -164,7 +164,7 @@ window Vim is running in with these commands: >
164
  *gui-IME* *iBus*
165
  Input methods for international characters in X that rely on the XIM
166
  framework, most notably iBus, have been known to produce undesirable results
167
- in gvim. These may include an inability to enter spaces, or long delays
168
  between typing a character and it being recognized by the application.
169
 
170
  One workaround that has been successful, for unknown reasons, is to prevent
@@ -574,8 +574,8 @@ the mouse button down on this will pop up a menu containing the item
574
  which when selected, performs the operation.
575
 
576
  To create a menu for terminal mode, use |:tlmenu| instead of |:tmenu| unlike
577
- key mapping (|:tmap|). This is because |:tmenu| is already used for defining
578
- tooltips for menus. See |terminal-typing|.
579
 
580
  Special characters in a menu name:
581
 
@@ -851,7 +851,7 @@ not wrap.
851
 
852
  Note that Vim may be in any mode when executing these commands. The menu
853
  should be defined for Normal mode and will be executed without changing the
854
- current mode. Thus if the current window is in Visual mode and the menu
855
  command does not intentionally change the mode, Vim will remain in Visual
856
  mode. Best is to use `:nnoremenu` to avoid side effects.
857
 
@@ -1019,8 +1019,8 @@ The tip is defined like this: >
1019
  And delete it with: >
1020
  :tunmenu MyMenu.Hello
1021
 
1022
- Tooltips are currently only supported for the X11 and Win32 GUI. However, they
1023
- should appear for the other gui platforms in the not too distant future.
1024
 
1025
  The ":tmenu" command works just like other menu commands, it uses the same
1026
  arguments. ":tunmenu" deletes an existing menu tip, in the same way as the
@@ -1158,12 +1158,12 @@ Examples: >
1158
 
1159
  See also |font-sizes|.
1160
 
1161
- Note on Weights: Fonts often come with a variety of weights. "Normal" weights
1162
  in Windows have a value of 400 and, left unspecified, this is the value that
1163
- will be used when attempting to find fonts. Windows will often match fonts
1164
  based on their weight with higher priority than the font name which means a
1165
  Book or Medium variant of a font might be used despite specifying a Light or
1166
- ExtraLight variant. If you are experiencing heavier weight substitution, then
1167
  explicitly setting a lower weight value may mitigate against this unwanted
1168
  substitution.
1169
 
 
1
+ *gui.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
 
164
  *gui-IME* *iBus*
165
  Input methods for international characters in X that rely on the XIM
166
  framework, most notably iBus, have been known to produce undesirable results
167
+ in gvim. These may include an inability to enter spaces, or long delays
168
  between typing a character and it being recognized by the application.
169
 
170
  One workaround that has been successful, for unknown reasons, is to prevent
 
574
  which when selected, performs the operation.
575
 
576
  To create a menu for terminal mode, use |:tlmenu| instead of |:tmenu| unlike
577
+ key mapping (|:tmap|). This is because |:tmenu| is already used for defining
578
+ tooltips for menus. See |terminal-typing|.
579
 
580
  Special characters in a menu name:
581
 
 
851
 
852
  Note that Vim may be in any mode when executing these commands. The menu
853
  should be defined for Normal mode and will be executed without changing the
854
+ current mode. Thus if the current window is in Visual mode and the menu
855
  command does not intentionally change the mode, Vim will remain in Visual
856
  mode. Best is to use `:nnoremenu` to avoid side effects.
857
 
 
1019
  And delete it with: >
1020
  :tunmenu MyMenu.Hello
1021
 
1022
+ Tooltips are currently only supported for the X11 and Win32 GUI. However,
1023
+ they should appear for the other gui platforms in the not too distant future.
1024
 
1025
  The ":tmenu" command works just like other menu commands, it uses the same
1026
  arguments. ":tunmenu" deletes an existing menu tip, in the same way as the
 
1158
 
1159
  See also |font-sizes|.
1160
 
1161
+ Note on Weights: Fonts often come with a variety of weights. "Normal" weights
1162
  in Windows have a value of 400 and, left unspecified, this is the value that
1163
+ will be used when attempting to find fonts. Windows will often match fonts
1164
  based on their weight with higher priority than the font name which means a
1165
  Book or Medium variant of a font might be used despite specifying a Light or
1166
+ ExtraLight variant. If you are experiencing heavier weight substitution, then
1167
  explicitly setting a lower weight value may mitigate against this unwanted
1168
  substitution.
1169
 
runtime/doc/gui_x11.txt CHANGED
@@ -1,4 +1,4 @@
1
- *gui_x11.txt* For Vim version 9.1. Last change: 2025 Sep 22
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
@@ -602,7 +602,7 @@ your pkg-config works with your GTK+ 2: >
602
 
603
  $ pkg-config --modversion gtk+-2.0
604
 
605
- Replace gtk+-2.0 with gtk+-3.0 for GTK+ 3. If you get the correct version
606
  number of your GTK+, you can proceed; if not, you probably need to do some
607
  system administration chores to set up pkg-config and GTK+ correctly.
608
 
 
1
+ *gui_x11.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
 
602
 
603
  $ pkg-config --modversion gtk+-2.0
604
 
605
+ Replace gtk+-2.0 with gtk+-3.0 for GTK+ 3. If you get the correct version
606
  number of your GTK+, you can proceed; if not, you probably need to do some
607
  system administration chores to set up pkg-config and GTK+ correctly.
608
 
runtime/doc/helphelp.txt CHANGED
@@ -1,4 +1,4 @@
1
- *helphelp.txt* For Vim version 9.1. Last change: 2025 Sep 29
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
@@ -297,9 +297,9 @@ the following pattern is used: >
297
 
298
  ^\w\+@\w\+:\f\+\$\s
299
 
300
- This is meant to match a default bash prompt. If it doesn't match your prompt,
301
- you can change the regex with the `shell_prompt` key from the `g:helptoc`
302
- dictionary variable: >
303
 
304
  let g:helptoc = {'shell_prompt': 'regex matching your shell prompt'}
305
 
@@ -456,8 +456,8 @@ This will highlight the column heading in a different color. E.g.
456
  Column heading~
457
 
458
  To separate sections in a help file, place a series of '=' characters in a
459
- line starting from the first column. The section separator line is highlighted
460
- differently.
461
 
462
  To quote a block of ex-commands verbatim, place a greater than (>) character
463
  at the end of the line before the block and a less than (<) character as the
 
1
+ *helphelp.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
 
297
 
298
  ^\w\+@\w\+:\f\+\$\s
299
 
300
+ This is meant to match a default bash prompt. If it doesn't match your
301
+ prompt, you can change the regex with the `shell_prompt` key from the
302
+ `g:helptoc` dictionary variable: >
303
 
304
  let g:helptoc = {'shell_prompt': 'regex matching your shell prompt'}
305
 
 
456
  Column heading~
457
 
458
  To separate sections in a help file, place a series of '=' characters in a
459
+ line starting from the first column. The section separator line is
460
+ highlighted differently.
461
 
462
  To quote a block of ex-commands verbatim, place a greater than (>) character
463
  at the end of the line before the block and a less than (<) character as the
runtime/doc/if_cscop.txt CHANGED
@@ -1,4 +1,4 @@
1
- *if_cscop.txt* For Vim version 9.1. Last change: 2025 Aug 10
2
 
3
 
4
  VIM REFERENCE MANUAL by Andy Kahn
@@ -255,7 +255,7 @@ started will have no effect!
255
  *cscopequickfix* *csqf* *E469*
256
  {not available when compiled without the |+quickfix| feature}
257
  'cscopequickfix' specifies whether to use quickfix window to show cscope
258
- results. This is a list of comma-separated values. Each item consists of
259
  |cscope-find| command (s, g, d, c, t, e, f, i or a) and flag (+, - or 0).
260
  '+' indicates that results must be appended to quickfix window,
261
  '-' implies previous results clearance, '0' or command absence - don't use
 
1
+ *if_cscop.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Andy Kahn
 
255
  *cscopequickfix* *csqf* *E469*
256
  {not available when compiled without the |+quickfix| feature}
257
  'cscopequickfix' specifies whether to use quickfix window to show cscope
258
+ results. This is a list of comma-separated values. Each item consists of
259
  |cscope-find| command (s, g, d, c, t, e, f, i or a) and flag (+, - or 0).
260
  '+' indicates that results must be appended to quickfix window,
261
  '-' implies previous results clearance, '0' or command absence - don't use
runtime/doc/if_lua.txt CHANGED
@@ -1,4 +1,4 @@
1
- *if_lua.txt* For Vim version 9.1. Last change: 2021 Aug 06
2
 
3
 
4
  VIM REFERENCE MANUAL by Luis Carvalho
@@ -71,7 +71,7 @@ If you use LuaJIT you can also use this: >
71
  argument being set to the text of each line in turn,
72
  without a trailing <EOL>, and the current line number.
73
  If the value returned by the function is a string it
74
- becomes the text of the line in the current turn. The
75
  default for [range] is the whole file: "1,$".
76
 
77
  Examples:
@@ -96,14 +96,14 @@ Examples:
96
  <
97
 
98
  All these commands execute a Lua chunk from either the command line (:lua and
99
- :luado) or a file (:luafile) with the given line [range]. Similarly to the Lua
100
- interpreter, each chunk has its own scope and so only global variables are
101
- shared between command calls. All Lua default libraries are available. In
102
  addition, Lua "print" function has its output redirected to the Vim message
103
  area, with arguments separated by a white space instead of a tab.
104
 
105
  Lua uses the "vim" module (see |lua-vim|) to issue commands to Vim
106
- and manage buffers (|lua-buffer|) and windows (|lua-window|). However,
107
  procedures that alter buffer content, open new buffers, and change cursor
108
  position are restricted when the command is executed in the |sandbox|.
109
 
@@ -111,18 +111,18 @@ position are restricted when the command is executed in the |sandbox|.
111
  ==============================================================================
112
  2. The vim module *lua-vim*
113
 
114
- Lua interfaces Vim through the "vim" module. The first and last line of the
115
- input range are stored in "vim.firstline" and "vim.lastline" respectively. The
116
- module also includes routines for buffer, window, and current line queries,
117
- Vim evaluation and command execution, and others.
118
 
119
  vim.list([arg]) Returns an empty list or, if "arg" is a Lua
120
  table with numeric keys 1, ..., n (a
121
  "sequence"), returns a list l such that l[i] =
122
  arg[i] for i = 1, ..., n (see |List|).
123
  Non-numeric keys are not used to initialize
124
- the list. See also |lua-eval| for conversion
125
- rules. Example: >
126
  :lua t = {math.pi, false, say = 'hi'}
127
  :echo luaeval('vim.list(t)')
128
  :" [3.141593, v:false], 'say' is ignored
@@ -130,10 +130,10 @@ Vim evaluation and command execution, and others.
130
  vim.dict([arg]) Returns an empty dictionary or, if "arg" is a
131
  Lua table, returns a dict d such that d[k] =
132
  arg[k] for all string keys k in "arg" (see
133
- |Dictionary|). Number keys are converted to
134
- strings. Keys that are not strings are not
135
- used to initialize the dictionary. See also
136
- |lua-eval| for conversion rules. Example: >
137
  :lua t = {math.pi, false, say = 'hi'}
138
  :echo luaeval('vim.dict(t)')
139
  :" {'1': 3.141593, '2': v:false,
@@ -148,29 +148,29 @@ Vim evaluation and command execution, and others.
148
  :" 0z31326162.0080FEFF
149
  <
150
  vim.funcref({name}) Returns a Funcref to function {name} (see
151
- |Funcref|). It is equivalent to Vim's
152
  function().
153
 
154
  vim.buffer([arg]) If "arg" is a number, returns buffer with
155
  number "arg" in the buffer list or, if "arg"
156
- is a string, returns buffer whose full or short
157
- name is "arg". In both cases, returns 'nil'
158
- (nil value, not string) if the buffer is not
159
- found. Otherwise, if "toboolean(arg)" is
160
  'true' returns the first buffer in the buffer
161
  list or else the current buffer.
162
 
163
  vim.window([arg]) If "arg" is a number, returns window with
164
  number "arg" or 'nil' (nil value, not string)
165
- if not found. Otherwise, if "toboolean(arg)"
166
  is 'true' returns the first window or else the
167
  current window.
168
 
169
- vim.type({arg}) Returns the type of {arg}. It is equivalent to
170
- Lua's "type" function, but returns "list",
171
  "dict", "funcref", "buffer", or "window" if
172
  {arg} is a list, dictionary, funcref, buffer,
173
- or window, respectively. Examples: >
174
  :lua l = vim.list()
175
  :lua print(type(l), vim.type(l))
176
  :" list
@@ -190,7 +190,7 @@ Vim evaluation and command execution, and others.
190
  vim.eval({expr}) Evaluates expression {expr} (see |expression|),
191
  converts the result to Lua, and returns it.
192
  Vim strings and numbers are directly converted
193
- to Lua strings and numbers respectively. Vim
194
  lists and dictionaries are converted to Lua
195
  userdata (see |lua-list| and |lua-dict|).
196
  Examples: >
@@ -203,16 +203,16 @@ Vim evaluation and command execution, and others.
203
  vim.beep() Beeps.
204
 
205
  vim.open({fname}) Opens a new buffer for file {fname} and
206
- returns it. Note that the buffer is not set as
207
- current.
208
 
209
  vim.call({name} [, {args}])
210
  Proxy to call Vim function named {name} with
211
  arguments {args}. Example: >
212
  :lua print(vim.call('has', 'timers'))
213
  <
214
- vim.fn Proxy to call Vim functions. Proxy methods are
215
- created on demand. Example: >
216
  :lua print(vim.fn.has('timers'))
217
  <
218
  vim.lua_version The Lua version Vim was compiled with, in the
@@ -227,7 +227,7 @@ Vim evaluation and command execution, and others.
227
  *lua-vim-variables*
228
  The Vim editor global dictionaries |g:| |w:| |b:| |t:| |v:| can be accessed
229
  from Lua conveniently and idiomatically by referencing the `vim.*` Lua tables
230
- described below. In this way you can easily read and modify global Vim script
231
  variables from Lua.
232
 
233
  Example: >
@@ -260,8 +260,8 @@ vim.v *vim.v*
260
  3. List userdata *lua-list*
261
 
262
  List userdata represent vim lists, and the interface tries to follow closely
263
- Vim's syntax for lists. Since lists are objects, changes in list references in
264
- Lua are reflected in Vim and vice-versa. A list "l" has the following
265
  properties and methods:
266
 
267
  NOTE: In patch 8.2.1066 array indexes were changed from zero-based to
@@ -274,23 +274,23 @@ Properties
274
  in Vim.
275
  o "l[k]" returns the k-th item in "l"; "l" is one-indexed, as in Lua.
276
  To modify the k-th item, simply do "l[k] = newitem"; in
277
- particular, "l[k] = nil" removes the k-th item from "l". Item can
278
  be added to the end of the list by "l[#l + 1] = newitem"
279
  o "l()" returns an iterator for "l".
280
  o "table.insert(l, newitem)" inserts an item at the end of the list.
281
  (only Lua 5.3 and later)
282
  o "table.insert(l, position, newitem)" inserts an item at the
283
- specified position. "position" is one-indexed. (only Lua 5.3 and
284
  later)
285
  o "table.remove(l, position)" removes an item at the specified
286
- position. "position" is one-indexed.
287
 
288
 
289
  Methods
290
  -------
291
  o "l:add(item)" appends "item" to the end of "l".
292
  o "l:insert(item[, pos])" inserts "item" at (optional)
293
- position "pos" in the list. The default value for "pos" is 0.
294
 
295
  Examples:
296
  >
@@ -312,8 +312,8 @@ Examples:
312
  4. Dict userdata *lua-dict*
313
 
314
  Similarly to list userdata, dict userdata represent vim dictionaries; since
315
- dictionaries are also objects, references are kept between Lua and Vim. A dict
316
- "d" has the following properties:
317
 
318
  Properties
319
  ----------
@@ -340,7 +340,7 @@ Examples:
340
  ==============================================================================
341
  5. Blob userdata *lua-blob*
342
 
343
- Blob userdata represent vim blobs. A blob "b" has the following properties:
344
 
345
  Properties
346
  ----------
@@ -367,7 +367,7 @@ Examples:
367
  ==============================================================================
368
  6. Funcref userdata *lua-funcref*
369
 
370
- Funcref userdata represent funcref variables in Vim. Funcrefs that were
371
  defined with a "dict" attribute need to be obtained as a dictionary key
372
  in order to have "self" properly assigned to the dictionary (see examples
373
  below.) A funcref "f" has the following properties:
@@ -408,8 +408,8 @@ can be accessed in Vim scripts. Example:
408
  ==============================================================================
409
  7. Buffer userdata *lua-buffer*
410
 
411
- Buffer userdata represent vim buffers. A buffer userdata "b" has the following
412
- properties and methods:
413
 
414
  Properties
415
  ----------
@@ -425,8 +425,8 @@ Properties
425
  Methods
426
  -------
427
  o "b:insert(newline[, pos])" inserts string "newline" at (optional)
428
- position "pos" in the buffer. The default value for "pos" is
429
- "#b + 1". If "pos == 0" then "newline" becomes the first line in
430
  the buffer.
431
  o "b:next()" returns the buffer next to "b" in the buffer list.
432
  o "b:previous()" returns the buffer previous to "b" in the buffer
@@ -460,7 +460,7 @@ Examples:
460
  ==============================================================================
461
  8. Window userdata *lua-window*
462
 
463
- Window objects represent vim windows. A window userdata "w" has the following
464
  properties and methods:
465
 
466
  Properties
@@ -493,8 +493,9 @@ Examples:
493
  9. luaeval() Vim function *lua-luaeval* *lua-eval*
494
 
495
  The (dual) equivalent of "vim.eval" for passing Lua values to Vim is
496
- "luaeval". "luaeval" takes an expression string and an optional argument and
497
- returns the result of the expression. It is semantically equivalent in Lua to:
 
498
  >
499
  local chunkheader = "local _A = select(1, ...) return "
500
  function luaeval (expstr, arg)
@@ -502,9 +503,9 @@ returns the result of the expression. It is semantically equivalent in Lua to:
502
  return chunk(arg) -- return typval
503
  end
504
  <
505
- Note that "_A" receives the argument to "luaeval". Lua numbers, strings, and
506
  list, dict, blob, and funcref userdata are converted to their Vim respective
507
- types, while Lua booleans are converted to numbers. An error is thrown if
508
  conversion of any of the remaining Lua types, including userdata other than
509
  lists, dicts, blobs, and funcrefs, is attempted.
510
 
 
1
+ *if_lua.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Luis Carvalho
 
71
  argument being set to the text of each line in turn,
72
  without a trailing <EOL>, and the current line number.
73
  If the value returned by the function is a string it
74
+ becomes the text of the line in the current turn. The
75
  default for [range] is the whole file: "1,$".
76
 
77
  Examples:
 
96
  <
97
 
98
  All these commands execute a Lua chunk from either the command line (:lua and
99
+ :luado) or a file (:luafile) with the given line [range]. Similarly to the
100
+ Lua interpreter, each chunk has its own scope and so only global variables are
101
+ shared between command calls. All Lua default libraries are available. In
102
  addition, Lua "print" function has its output redirected to the Vim message
103
  area, with arguments separated by a white space instead of a tab.
104
 
105
  Lua uses the "vim" module (see |lua-vim|) to issue commands to Vim
106
+ and manage buffers (|lua-buffer|) and windows (|lua-window|). However,
107
  procedures that alter buffer content, open new buffers, and change cursor
108
  position are restricted when the command is executed in the |sandbox|.
109
 
 
111
  ==============================================================================
112
  2. The vim module *lua-vim*
113
 
114
+ Lua interfaces Vim through the "vim" module. The first and last line of the
115
+ input range are stored in "vim.firstline" and "vim.lastline" respectively.
116
+ The module also includes routines for buffer, window, and current line
117
+ queries, Vim evaluation and command execution, and others.
118
 
119
  vim.list([arg]) Returns an empty list or, if "arg" is a Lua
120
  table with numeric keys 1, ..., n (a
121
  "sequence"), returns a list l such that l[i] =
122
  arg[i] for i = 1, ..., n (see |List|).
123
  Non-numeric keys are not used to initialize
124
+ the list. See also |lua-eval| for conversion
125
+ rules. Example: >
126
  :lua t = {math.pi, false, say = 'hi'}
127
  :echo luaeval('vim.list(t)')
128
  :" [3.141593, v:false], 'say' is ignored
 
130
  vim.dict([arg]) Returns an empty dictionary or, if "arg" is a
131
  Lua table, returns a dict d such that d[k] =
132
  arg[k] for all string keys k in "arg" (see
133
+ |Dictionary|). Number keys are converted to
134
+ strings. Keys that are not strings are not
135
+ used to initialize the dictionary. See also
136
+ |lua-eval| for conversion rules. Example: >
137
  :lua t = {math.pi, false, say = 'hi'}
138
  :echo luaeval('vim.dict(t)')
139
  :" {'1': 3.141593, '2': v:false,
 
148
  :" 0z31326162.0080FEFF
149
  <
150
  vim.funcref({name}) Returns a Funcref to function {name} (see
151
+ |Funcref|). It is equivalent to Vim's
152
  function().
153
 
154
  vim.buffer([arg]) If "arg" is a number, returns buffer with
155
  number "arg" in the buffer list or, if "arg"
156
+ is a string, returns buffer whose full or
157
+ short name is "arg". In both cases, returns
158
+ 'nil' (nil value, not string) if the buffer is
159
+ not found. Otherwise, if "toboolean(arg)" is
160
  'true' returns the first buffer in the buffer
161
  list or else the current buffer.
162
 
163
  vim.window([arg]) If "arg" is a number, returns window with
164
  number "arg" or 'nil' (nil value, not string)
165
+ if not found. Otherwise, if "toboolean(arg)"
166
  is 'true' returns the first window or else the
167
  current window.
168
 
169
+ vim.type({arg}) Returns the type of {arg}. It is equivalent
170
+ to Lua's "type" function, but returns "list",
171
  "dict", "funcref", "buffer", or "window" if
172
  {arg} is a list, dictionary, funcref, buffer,
173
+ or window, respectively. Examples: >
174
  :lua l = vim.list()
175
  :lua print(type(l), vim.type(l))
176
  :" list
 
190
  vim.eval({expr}) Evaluates expression {expr} (see |expression|),
191
  converts the result to Lua, and returns it.
192
  Vim strings and numbers are directly converted
193
+ to Lua strings and numbers respectively. Vim
194
  lists and dictionaries are converted to Lua
195
  userdata (see |lua-list| and |lua-dict|).
196
  Examples: >
 
203
  vim.beep() Beeps.
204
 
205
  vim.open({fname}) Opens a new buffer for file {fname} and
206
+ returns it. Note that the buffer is not set
207
+ as current.
208
 
209
  vim.call({name} [, {args}])
210
  Proxy to call Vim function named {name} with
211
  arguments {args}. Example: >
212
  :lua print(vim.call('has', 'timers'))
213
  <
214
+ vim.fn Proxy to call Vim functions. Proxy methods
215
+ are created on demand. Example: >
216
  :lua print(vim.fn.has('timers'))
217
  <
218
  vim.lua_version The Lua version Vim was compiled with, in the
 
227
  *lua-vim-variables*
228
  The Vim editor global dictionaries |g:| |w:| |b:| |t:| |v:| can be accessed
229
  from Lua conveniently and idiomatically by referencing the `vim.*` Lua tables
230
+ described below. In this way you can easily read and modify global Vim script
231
  variables from Lua.
232
 
233
  Example: >
 
260
  3. List userdata *lua-list*
261
 
262
  List userdata represent vim lists, and the interface tries to follow closely
263
+ Vim's syntax for lists. Since lists are objects, changes in list references
264
+ in Lua are reflected in Vim and vice-versa. A list "l" has the following
265
  properties and methods:
266
 
267
  NOTE: In patch 8.2.1066 array indexes were changed from zero-based to
 
274
  in Vim.
275
  o "l[k]" returns the k-th item in "l"; "l" is one-indexed, as in Lua.
276
  To modify the k-th item, simply do "l[k] = newitem"; in
277
+ particular, "l[k] = nil" removes the k-th item from "l". Item can
278
  be added to the end of the list by "l[#l + 1] = newitem"
279
  o "l()" returns an iterator for "l".
280
  o "table.insert(l, newitem)" inserts an item at the end of the list.
281
  (only Lua 5.3 and later)
282
  o "table.insert(l, position, newitem)" inserts an item at the
283
+ specified position. "position" is one-indexed. (only Lua 5.3 and
284
  later)
285
  o "table.remove(l, position)" removes an item at the specified
286
+ position. "position" is one-indexed.
287
 
288
 
289
  Methods
290
  -------
291
  o "l:add(item)" appends "item" to the end of "l".
292
  o "l:insert(item[, pos])" inserts "item" at (optional)
293
+ position "pos" in the list. The default value for "pos" is 0.
294
 
295
  Examples:
296
  >
 
312
  4. Dict userdata *lua-dict*
313
 
314
  Similarly to list userdata, dict userdata represent vim dictionaries; since
315
+ dictionaries are also objects, references are kept between Lua and Vim. A
316
+ dict "d" has the following properties:
317
 
318
  Properties
319
  ----------
 
340
  ==============================================================================
341
  5. Blob userdata *lua-blob*
342
 
343
+ Blob userdata represent vim blobs. A blob "b" has the following properties:
344
 
345
  Properties
346
  ----------
 
367
  ==============================================================================
368
  6. Funcref userdata *lua-funcref*
369
 
370
+ Funcref userdata represent funcref variables in Vim. Funcrefs that were
371
  defined with a "dict" attribute need to be obtained as a dictionary key
372
  in order to have "self" properly assigned to the dictionary (see examples
373
  below.) A funcref "f" has the following properties:
 
408
  ==============================================================================
409
  7. Buffer userdata *lua-buffer*
410
 
411
+ Buffer userdata represent vim buffers. A buffer userdata "b" has the
412
+ following properties and methods:
413
 
414
  Properties
415
  ----------
 
425
  Methods
426
  -------
427
  o "b:insert(newline[, pos])" inserts string "newline" at (optional)
428
+ position "pos" in the buffer. The default value for "pos" is
429
+ "#b + 1". If "pos == 0" then "newline" becomes the first line in
430
  the buffer.
431
  o "b:next()" returns the buffer next to "b" in the buffer list.
432
  o "b:previous()" returns the buffer previous to "b" in the buffer
 
460
  ==============================================================================
461
  8. Window userdata *lua-window*
462
 
463
+ Window objects represent vim windows. A window userdata "w" has the following
464
  properties and methods:
465
 
466
  Properties
 
493
  9. luaeval() Vim function *lua-luaeval* *lua-eval*
494
 
495
  The (dual) equivalent of "vim.eval" for passing Lua values to Vim is
496
+ "luaeval". "luaeval" takes an expression string and an optional argument and
497
+ returns the result of the expression. It is semantically equivalent in Lua
498
+ to:
499
  >
500
  local chunkheader = "local _A = select(1, ...) return "
501
  function luaeval (expstr, arg)
 
503
  return chunk(arg) -- return typval
504
  end
505
  <
506
+ Note that "_A" receives the argument to "luaeval". Lua numbers, strings, and
507
  list, dict, blob, and funcref userdata are converted to their Vim respective
508
+ types, while Lua booleans are converted to numbers. An error is thrown if
509
  conversion of any of the remaining Lua types, including userdata other than
510
  lists, dicts, blobs, and funcrefs, is attempted.
511
 
runtime/doc/if_mzsch.txt CHANGED
@@ -1,4 +1,4 @@
1
- *if_mzsch.txt* For Vim version 9.1. Last change: 2020 Oct 14
2
 
3
 
4
  VIM REFERENCE MANUAL by Sergey Khorev
@@ -20,7 +20,7 @@ The MzScheme Interface to Vim *mzscheme* *MzScheme*
20
  Based on the work of Brent Fulgham.
21
  Dynamic loading added by Sergey Khorev
22
 
23
- MzScheme and PLT Scheme names have been rebranded as Racket. For more
24
  information please check http://racket-lang.org
25
 
26
  Futures and places of Racket version 5.x up to and including 5.3.1 do not
@@ -67,8 +67,8 @@ MzScheme interface defines exception exn:vim, derived from exn.
67
  It is raised for various Vim errors.
68
 
69
  During compilation, the MzScheme interface will remember the current MzScheme
70
- collection path. If you want to specify additional paths use the
71
- 'current-library-collection-paths' parameter. E.g., to cons the user-local
72
  MzScheme collection path: >
73
  :mz << EOF
74
  (current-library-collection-paths
@@ -150,9 +150,9 @@ Auto-instantiation of vimext module (can be placed in your |vimrc|): >
150
  ==============================================================================
151
  3. Threads *mzscheme-threads*
152
 
153
- The MzScheme interface supports threads. They are independent from OS threads,
154
- thus scheduling is required. The option 'mzquantum' determines how often
155
- Vim should poll for available MzScheme threads.
156
  NOTE
157
  Thread scheduling in the console version of Vim is less reliable than in the
158
  GUI version.
@@ -181,12 +181,12 @@ Common
181
  (get-option {option-name} [buffer-or-window]) Get Vim option value (either
182
  local or global, see set-option).
183
  (set-option {string} [buffer-or-window])
184
- Set a Vim option. String must have option
185
  setting form (like optname=optval, or
186
  optname+=optval, etc.) When called with
187
  {buffer} or {window} the local option will
188
- be set. The symbol 'global can be passed
189
- as {buffer-or-window}. Then |:setglobal|
190
  will be used.
191
 
192
  Buffers *mzscheme-buffer*
@@ -197,17 +197,17 @@ Buffers *mzscheme-buffer*
197
  (get-buff-line {linenr} [buffer])
198
  Get line from a buffer.
199
  (set-buff-line {linenr} {string} [buffer])
200
- Set a line in a buffer. If {string} is #f,
201
- the line gets deleted. The [buffer]
202
- argument is optional. If omitted, the
203
  current buffer will be used.
204
  (get-buff-line-list {start} {end} [buffer])
205
- Get a list of lines in a buffer. {Start}
206
  and {end} are 1-based and inclusive.
207
  (set-buff-line-list {start} {end} {string-list} [buffer])
208
- Set a list of lines in a buffer. If
209
  string-list is #f or null, the lines get
210
- deleted. If a list is shorter than
211
  {end}-{start} the remaining lines will
212
  be deleted.
213
  (get-buff-name [buffer]) Get a buffer's text name.
@@ -215,13 +215,14 @@ Buffers *mzscheme-buffer*
215
  (get-buff-size [buffer]) Get buffer line count.
216
  (insert-buff-line-list {linenr} {string/string-list} [buffer])
217
  Insert a list of lines into a buffer after
218
- {linenr}. If {linenr} is 0, lines will be
219
  inserted at start.
220
- (curr-buff) Get the current buffer. Use other MzScheme
221
- interface procedures to change it.
 
222
  (buff-count) Get count of total buffers in the editor.
223
  (get-next-buff [buffer]) Get next buffer.
224
- (get-prev-buff [buffer]) Get previous buffer. Return #f when there
225
  are no more buffers.
226
  (open-buff {filename}) Open a new buffer (for file "name")
227
  (get-buff-by-name {buffername}) Get a buffer by its filename or #f
@@ -258,7 +259,7 @@ evaluate MzScheme expressions and pass their values to Vim script.
258
  6. Using Function references *mzscheme-funcref*
259
 
260
  MzScheme interface allows use of |Funcref|s so you can call Vim functions
261
- directly from Scheme. For instance: >
262
  function! MyAdd2(arg)
263
  return a:arg + 2
264
  endfunction
@@ -273,7 +274,7 @@ directly from Scheme. For instance: >
273
  ==============================================================================
274
  7. Dynamic loading *mzscheme-dynamic* *E815*
275
 
276
- On MS-Windows the MzScheme libraries can be loaded dynamically. The |:version|
277
  output then includes |+mzscheme/dyn|.
278
 
279
  This means that Vim will search for the MzScheme DLL files only when needed.
@@ -291,7 +292,7 @@ name of the library to load. The initial value is specified at build time.
291
 
292
  The version of the DLL must match the MzScheme version Vim was compiled with.
293
  For MzScheme version 209 they will be "libmzsch209_000.dll" and
294
- "libmzgc209_000.dll". To know for sure look at the output of the ":version"
295
  command, look for -DDYNAMIC_MZSCH_DLL="something" and
296
  -DDYNAMIC_MZGC_DLL="something" in the "Compilation" info.
297
 
 
1
+ *if_mzsch.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Sergey Khorev
 
20
  Based on the work of Brent Fulgham.
21
  Dynamic loading added by Sergey Khorev
22
 
23
+ MzScheme and PLT Scheme names have been rebranded as Racket. For more
24
  information please check http://racket-lang.org
25
 
26
  Futures and places of Racket version 5.x up to and including 5.3.1 do not
 
67
  It is raised for various Vim errors.
68
 
69
  During compilation, the MzScheme interface will remember the current MzScheme
70
+ collection path. If you want to specify additional paths use the
71
+ 'current-library-collection-paths' parameter. E.g., to cons the user-local
72
  MzScheme collection path: >
73
  :mz << EOF
74
  (current-library-collection-paths
 
150
  ==============================================================================
151
  3. Threads *mzscheme-threads*
152
 
153
+ The MzScheme interface supports threads. They are independent from OS
154
+ threads, thus scheduling is required. The option 'mzquantum' determines how
155
+ often Vim should poll for available MzScheme threads.
156
  NOTE
157
  Thread scheduling in the console version of Vim is less reliable than in the
158
  GUI version.
 
181
  (get-option {option-name} [buffer-or-window]) Get Vim option value (either
182
  local or global, see set-option).
183
  (set-option {string} [buffer-or-window])
184
+ Set a Vim option. String must have option
185
  setting form (like optname=optval, or
186
  optname+=optval, etc.) When called with
187
  {buffer} or {window} the local option will
188
+ be set. The symbol 'global can be passed
189
+ as {buffer-or-window}. Then |:setglobal|
190
  will be used.
191
 
192
  Buffers *mzscheme-buffer*
 
197
  (get-buff-line {linenr} [buffer])
198
  Get line from a buffer.
199
  (set-buff-line {linenr} {string} [buffer])
200
+ Set a line in a buffer. If {string} is
201
+ #f, the line gets deleted. The [buffer]
202
+ argument is optional. If omitted, the
203
  current buffer will be used.
204
  (get-buff-line-list {start} {end} [buffer])
205
+ Get a list of lines in a buffer. {Start}
206
  and {end} are 1-based and inclusive.
207
  (set-buff-line-list {start} {end} {string-list} [buffer])
208
+ Set a list of lines in a buffer. If
209
  string-list is #f or null, the lines get
210
+ deleted. If a list is shorter than
211
  {end}-{start} the remaining lines will
212
  be deleted.
213
  (get-buff-name [buffer]) Get a buffer's text name.
 
215
  (get-buff-size [buffer]) Get buffer line count.
216
  (insert-buff-line-list {linenr} {string/string-list} [buffer])
217
  Insert a list of lines into a buffer after
218
+ {linenr}. If {linenr} is 0, lines will be
219
  inserted at start.
220
+ (curr-buff) Get the current buffer. Use other
221
+ MzScheme interface procedures to change
222
+ it.
223
  (buff-count) Get count of total buffers in the editor.
224
  (get-next-buff [buffer]) Get next buffer.
225
+ (get-prev-buff [buffer]) Get previous buffer. Return #f when there
226
  are no more buffers.
227
  (open-buff {filename}) Open a new buffer (for file "name")
228
  (get-buff-by-name {buffername}) Get a buffer by its filename or #f
 
259
  6. Using Function references *mzscheme-funcref*
260
 
261
  MzScheme interface allows use of |Funcref|s so you can call Vim functions
262
+ directly from Scheme. For instance: >
263
  function! MyAdd2(arg)
264
  return a:arg + 2
265
  endfunction
 
274
  ==============================================================================
275
  7. Dynamic loading *mzscheme-dynamic* *E815*
276
 
277
+ On MS-Windows the MzScheme libraries can be loaded dynamically. The |:version|
278
  output then includes |+mzscheme/dyn|.
279
 
280
  This means that Vim will search for the MzScheme DLL files only when needed.
 
292
 
293
  The version of the DLL must match the MzScheme version Vim was compiled with.
294
  For MzScheme version 209 they will be "libmzsch209_000.dll" and
295
+ "libmzgc209_000.dll". To know for sure look at the output of the ":version"
296
  command, look for -DDYNAMIC_MZSCH_DLL="something" and
297
  -DDYNAMIC_MZGC_DLL="something" in the "Compilation" info.
298
 
runtime/doc/if_perl.txt CHANGED
@@ -1,4 +1,4 @@
1
- *if_perl.txt* For Vim version 9.1. Last change: 2025 Oct 04
2
 
3
 
4
  VIM REFERENCE MANUAL by Sven Verdoolaege
@@ -17,9 +17,9 @@ Perl and Vim *perl* *Perl*
17
  1. Editing Perl files *perl-editing*
18
 
19
  Vim syntax highlighting supports Perl and POD files. Vim assumes a file is
20
- Perl code if the filename has a .pl or .pm suffix. Vim also examines the first
21
- line of a file, regardless of the filename suffix, to check if a file is a
22
- Perl script (see scripts.vim in Vim's syntax directory). Vim assumes a file
23
  is POD text if the filename has a .POD suffix.
24
 
25
  To use tags with Perl, you need Universal/Exuberant Ctags. Look here:
@@ -90,9 +90,9 @@ To see what version of Perl you have: >
90
  *:perldo* *:perld*
91
  :[range]perld[o] {cmd} Execute Perl command {cmd} for each line in the
92
  [range], with $_ being set to the text of each line in
93
- turn, without a trailing <EOL>. Setting $_ will change
94
- the text, but note that it is not possible to add or
95
- delete lines using this command.
96
  The default for [range] is the whole file: "1,$".
97
 
98
  Here are some things you can try: >
@@ -296,8 +296,8 @@ version of the shared library must match the Perl version Vim was compiled
296
  with.
297
 
298
  Note: If you are building Perl locally, you have to use a version compiled
299
- with threading support for it for Vim to successfully link against it. You can
300
- use the `-Dusethreads` flags when configuring Perl, and check that a Perl
301
  binary has it enabled by running `perl -V` and verify that `USE_ITHREADS` is
302
  under "Compile-time options".
303
 
 
1
+ *if_perl.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Sven Verdoolaege
 
17
  1. Editing Perl files *perl-editing*
18
 
19
  Vim syntax highlighting supports Perl and POD files. Vim assumes a file is
20
+ Perl code if the filename has a .pl or .pm suffix. Vim also examines the
21
+ first line of a file, regardless of the filename suffix, to check if a file is
22
+ a Perl script (see scripts.vim in Vim's syntax directory). Vim assumes a file
23
  is POD text if the filename has a .POD suffix.
24
 
25
  To use tags with Perl, you need Universal/Exuberant Ctags. Look here:
 
90
  *:perldo* *:perld*
91
  :[range]perld[o] {cmd} Execute Perl command {cmd} for each line in the
92
  [range], with $_ being set to the text of each line in
93
+ turn, without a trailing <EOL>. Setting $_ will
94
+ change the text, but note that it is not possible to
95
+ add or delete lines using this command.
96
  The default for [range] is the whole file: "1,$".
97
 
98
  Here are some things you can try: >
 
296
  with.
297
 
298
  Note: If you are building Perl locally, you have to use a version compiled
299
+ with threading support for it for Vim to successfully link against it. You
300
+ can use the `-Dusethreads` flags when configuring Perl, and check that a Perl
301
  binary has it enabled by running `perl -V` and verify that `USE_ITHREADS` is
302
  under "Compile-time options".
303
 
runtime/doc/if_pyth.txt CHANGED
@@ -1,4 +1,4 @@
1
- *if_pyth.txt* For Vim version 9.1. Last change: 2025 Mar 26
2
 
3
 
4
  VIM REFERENCE MANUAL by Paul Moore
@@ -80,9 +80,9 @@ and "EOF" do not have any indent.
80
  {body}" for each line in the [range], with the
81
  function arguments being set to the text of each line
82
  in turn, without a trailing <EOL>, and the current
83
- line number. The function should return a string or
84
- None. If a string is returned, it becomes the text of
85
- the line in the current turn. The default for [range]
86
  is the whole file: "1,$".
87
 
88
  Examples:
@@ -91,7 +91,7 @@ Examples:
91
  :pydo if line: return "%4d: %s" % (linenr, line)
92
  <
93
  One can use `:pydo` in possible conjunction with `:py` to filter a range using
94
- python. For example: >
95
 
96
  :py3 << EOF
97
  needle = vim.eval('@a')
@@ -205,12 +205,12 @@ vim.eval(str) *python-eval*
205
  'eval_expr', 'kind': 'f', 'filename': './src/eval.c'}] ~
206
 
207
  NOTE: In Vim9 script, local variables in def functions are not visible
208
- to python evaluations. To pass local variables to python evaluations,
209
  use the {locals} dict when calling |py3eval()| and friends.
210
 
211
  vim.bindeval(str) *python-bindeval*
212
  Like |python-eval|, but returns special objects described in
213
- |python-bindeval-objects|. These python objects let you modify
214
  (|List|, |Tuple| or |Dictionary|) or call (|Funcref|) vim objects.
215
 
216
  vim.strwidth(str) *python-strwidth*
@@ -220,14 +220,14 @@ vim.strwidth(str) *python-strwidth*
220
  vim.foreach_rtp(callable) *python-foreach_rtp*
221
  Call the given callable for each path in 'runtimepath' until either
222
  callable returns something but None, the exception is raised or there
223
- are no longer paths. If stopped in case callable returned non-None,
224
  vim.foreach_rtp function returns the value returned by callable.
225
 
226
  vim.chdir(*args, **kwargs) *python-chdir*
227
  vim.fchdir(*args, **kwargs) *python-fchdir*
228
  Run os.chdir or os.fchdir, then all appropriate vim stuff.
229
  Note: you should not use these functions directly, use os.chdir and
230
- os.fchdir instead. Behavior of vim.fchdir is undefined in case
231
  os.fchdir does not exist.
232
 
233
  Error object of the "vim" module
@@ -265,12 +265,12 @@ vim.windows *python-windows*
265
  < Note: vim.windows object always accesses current tab page.
266
  |python-tabpage|.windows objects are bound to parent |python-tabpage|
267
  object and always use windows from that tab page (or throw vim.error
268
- in case tab page was deleted). You can keep a reference to both
269
  without keeping a reference to vim module object or |python-tabpage|,
270
  they will not lose their properties in this case.
271
 
272
  vim.tabpages *python-tabpages*
273
- A sequence object providing access to the list of vim tab pages. The
274
  object supports the following operations: >
275
  :py t = vim.tabpages[i] # Indexing (read-only)
276
  :py t in vim.tabpages # Membership test
@@ -293,10 +293,10 @@ vim.current *python-current*
293
 
294
  Note: When assigning to vim.current.{buffer,window,tabpage} it expects
295
  valid |python-buffer|, |python-window| or |python-tabpage| objects
296
- respectively. Assigning triggers normal (with |autocommand|s)
297
- switching to given buffer, window or tab page. It is the only way to
298
  switch UI objects in python: you can't assign to
299
- |python-tabpage|.window attribute. To switch without triggering
300
  autocommands use >
301
  py << EOF
302
  saved_eventignore = vim.options['eventignore']
@@ -310,16 +310,16 @@ vim.current *python-current*
310
  vim.vars *python-vars*
311
  vim.vvars *python-vvars*
312
  Dictionary-like objects holding dictionaries with global (|g:|) and
313
- vim (|v:|) variables respectively. Identical to `vim.bindeval("g:")`,
314
  but faster.
315
 
316
  vim.options *python-options*
317
  Object partly supporting mapping protocol (supports setting and
318
  getting items) providing a read-write access to global options.
319
- Note: unlike |:set| this provides access only to global options. You
320
  cannot use this object to obtain or set local options' values or
321
- access local-only options in any fashion. Raises KeyError if no global
322
- option with such name exists (i.e. does not raise KeyError for
323
  |global-local| options and global only options, but does for window-
324
  and buffer-local ones). Use |python-buffer| objects to access to
325
  buffer-local options and |python-window| objects to access to
@@ -340,8 +340,8 @@ Output from Python *python-output*
340
 
341
  *python-input*
342
  Input (via sys.stdin, including input() and raw_input()) is not
343
- supported, and may cause the program to crash. This should probably be
344
- fixed.
345
 
346
  *python2-directory* *python3-directory* *pythonx-directory*
347
  Python 'runtimepath' handling *python-special-path*
@@ -401,11 +401,11 @@ Implementation is similar to the following, but written in C: >
401
 
402
  sys.path_hooks.append(hook)
403
 
404
- vim.VIM_SPECIAL_PATH *python-VIM_SPECIAL_PATH*
405
- String constant used in conjunction with vim path hook. If path hook
406
  installed by vim is requested to handle anything but path equal to
407
- vim.VIM_SPECIAL_PATH constant it raises ImportError. In the only other
408
- case it uses special loader.
409
 
410
  Note: you must not use value of this constant directly, always use
411
  vim.VIM_SPECIAL_PATH object.
@@ -422,7 +422,7 @@ vim.find_spec(...) *python-find_spec*
422
 
423
  vim._get_paths *python-_get_paths*
424
  Methods returning a list of paths which will be searched for by path
425
- hook. You should not rely on this method being present in future
426
  versions, but can use it for debugging.
427
 
428
  It returns a list of {rtp}/python2 (or {rtp}/python3) and
@@ -431,7 +431,8 @@ vim._get_paths *python-_get_paths*
431
  ==============================================================================
432
  3. Buffer objects *python-buffer*
433
 
434
- Buffer objects represent vim buffers. You can obtain them in a number of ways:
 
435
  - via vim.current.buffer (|python-current|)
436
  - from indexing vim.buffers (|python-buffers|)
437
  - from the "buffer" attribute of a window (|python-window|)
@@ -445,9 +446,10 @@ act as if they were lists (yes, they are mutable) of strings, with each
445
  element being a line of the buffer. All of the usual sequence operations,
446
  including indexing, index assignment, slicing and slice assignment, work as
447
  you would expect. Note that the result of indexing (slicing) a buffer is a
448
- string (list of strings). This has one unusual consequence - b[:] is different
449
- from b. In particular, "b[:] = None" deletes the whole of the buffer, whereas
450
- "b = None" merely updates the variable b, with no effect on the buffer.
 
451
 
452
  Buffer indexes start at zero, as is normal in Python. This differs from vim
453
  line numbers, which start from 1. This is particularly relevant when dealing
@@ -458,17 +460,17 @@ The buffer object attributes are:
458
  |buffer-variable|s.
459
  b.options Mapping object (supports item getting, setting and
460
  deleting) that provides access to buffer-local options
461
- and buffer-local values of |global-local| options. Use
462
  |python-window|.options if option is window-local,
463
- this object will raise KeyError. If option is
464
  |global-local| and local value is missing getting it
465
  will return None.
466
- b.name String, RW. Contains buffer name (full path).
467
  Note: when assigning to b.name |BufFilePre| and
468
  |BufFilePost| autocommands are launched.
469
- b.number Buffer number. Can be used as |python-buffers| key.
470
  Read-only.
471
- b.valid True or False. Buffer object becomes invalid when
472
  corresponding buffer is wiped out.
473
 
474
  The buffer object methods are:
@@ -541,7 +543,8 @@ Example (assume r is the current range): >
541
  ==============================================================================
542
  5. Window objects *python-window*
543
 
544
- Window objects represent vim windows. You can obtain them in a number of ways:
 
545
  - via vim.current.window (|python-current|)
546
  - from indexing vim.windows (|python-windows|)
547
  - from indexing "windows" attribute of a tab page (|python-tabpage|)
 
1
+ *if_pyth.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Paul Moore
 
80
  {body}" for each line in the [range], with the
81
  function arguments being set to the text of each line
82
  in turn, without a trailing <EOL>, and the current
83
+ line number. The function should return a string or
84
+ None. If a string is returned, it becomes the text of
85
+ the line in the current turn. The default for [range]
86
  is the whole file: "1,$".
87
 
88
  Examples:
 
91
  :pydo if line: return "%4d: %s" % (linenr, line)
92
  <
93
  One can use `:pydo` in possible conjunction with `:py` to filter a range using
94
+ python. For example: >
95
 
96
  :py3 << EOF
97
  needle = vim.eval('@a')
 
205
  'eval_expr', 'kind': 'f', 'filename': './src/eval.c'}] ~
206
 
207
  NOTE: In Vim9 script, local variables in def functions are not visible
208
+ to python evaluations. To pass local variables to python evaluations,
209
  use the {locals} dict when calling |py3eval()| and friends.
210
 
211
  vim.bindeval(str) *python-bindeval*
212
  Like |python-eval|, but returns special objects described in
213
+ |python-bindeval-objects|. These python objects let you modify
214
  (|List|, |Tuple| or |Dictionary|) or call (|Funcref|) vim objects.
215
 
216
  vim.strwidth(str) *python-strwidth*
 
220
  vim.foreach_rtp(callable) *python-foreach_rtp*
221
  Call the given callable for each path in 'runtimepath' until either
222
  callable returns something but None, the exception is raised or there
223
+ are no longer paths. If stopped in case callable returned non-None,
224
  vim.foreach_rtp function returns the value returned by callable.
225
 
226
  vim.chdir(*args, **kwargs) *python-chdir*
227
  vim.fchdir(*args, **kwargs) *python-fchdir*
228
  Run os.chdir or os.fchdir, then all appropriate vim stuff.
229
  Note: you should not use these functions directly, use os.chdir and
230
+ os.fchdir instead. Behavior of vim.fchdir is undefined in case
231
  os.fchdir does not exist.
232
 
233
  Error object of the "vim" module
 
265
  < Note: vim.windows object always accesses current tab page.
266
  |python-tabpage|.windows objects are bound to parent |python-tabpage|
267
  object and always use windows from that tab page (or throw vim.error
268
+ in case tab page was deleted). You can keep a reference to both
269
  without keeping a reference to vim module object or |python-tabpage|,
270
  they will not lose their properties in this case.
271
 
272
  vim.tabpages *python-tabpages*
273
+ A sequence object providing access to the list of vim tab pages. The
274
  object supports the following operations: >
275
  :py t = vim.tabpages[i] # Indexing (read-only)
276
  :py t in vim.tabpages # Membership test
 
293
 
294
  Note: When assigning to vim.current.{buffer,window,tabpage} it expects
295
  valid |python-buffer|, |python-window| or |python-tabpage| objects
296
+ respectively. Assigning triggers normal (with |autocommand|s)
297
+ switching to given buffer, window or tab page. It is the only way to
298
  switch UI objects in python: you can't assign to
299
+ |python-tabpage|.window attribute. To switch without triggering
300
  autocommands use >
301
  py << EOF
302
  saved_eventignore = vim.options['eventignore']
 
310
  vim.vars *python-vars*
311
  vim.vvars *python-vvars*
312
  Dictionary-like objects holding dictionaries with global (|g:|) and
313
+ vim (|v:|) variables respectively. Identical to `vim.bindeval("g:")`,
314
  but faster.
315
 
316
  vim.options *python-options*
317
  Object partly supporting mapping protocol (supports setting and
318
  getting items) providing a read-write access to global options.
319
+ Note: unlike |:set| this provides access only to global options. You
320
  cannot use this object to obtain or set local options' values or
321
+ access local-only options in any fashion. Raises KeyError if no
322
+ global option with such name exists (i.e. does not raise KeyError for
323
  |global-local| options and global only options, but does for window-
324
  and buffer-local ones). Use |python-buffer| objects to access to
325
  buffer-local options and |python-window| objects to access to
 
340
 
341
  *python-input*
342
  Input (via sys.stdin, including input() and raw_input()) is not
343
+ supported, and may cause the program to crash. This should probably
344
+ be fixed.
345
 
346
  *python2-directory* *python3-directory* *pythonx-directory*
347
  Python 'runtimepath' handling *python-special-path*
 
401
 
402
  sys.path_hooks.append(hook)
403
 
404
+ vim.VIM_SPECIAL_PATH *python-VIM_SPECIAL_PATH*
405
+ String constant used in conjunction with vim path hook. If path hook
406
  installed by vim is requested to handle anything but path equal to
407
+ vim.VIM_SPECIAL_PATH constant it raises ImportError. In the only
408
+ other case it uses special loader.
409
 
410
  Note: you must not use value of this constant directly, always use
411
  vim.VIM_SPECIAL_PATH object.
 
422
 
423
  vim._get_paths *python-_get_paths*
424
  Methods returning a list of paths which will be searched for by path
425
+ hook. You should not rely on this method being present in future
426
  versions, but can use it for debugging.
427
 
428
  It returns a list of {rtp}/python2 (or {rtp}/python3) and
 
431
  ==============================================================================
432
  3. Buffer objects *python-buffer*
433
 
434
+ Buffer objects represent vim buffers. You can obtain them in a number of
435
+ ways:
436
  - via vim.current.buffer (|python-current|)
437
  - from indexing vim.buffers (|python-buffers|)
438
  - from the "buffer" attribute of a window (|python-window|)
 
446
  element being a line of the buffer. All of the usual sequence operations,
447
  including indexing, index assignment, slicing and slice assignment, work as
448
  you would expect. Note that the result of indexing (slicing) a buffer is a
449
+ string (list of strings). This has one unusual consequence - b[:] is
450
+ different from b. In particular, "b[:] = None" deletes the whole of the
451
+ buffer, whereas "b = None" merely updates the variable b, with no effect on
452
+ the buffer.
453
 
454
  Buffer indexes start at zero, as is normal in Python. This differs from vim
455
  line numbers, which start from 1. This is particularly relevant when dealing
 
460
  |buffer-variable|s.
461
  b.options Mapping object (supports item getting, setting and
462
  deleting) that provides access to buffer-local options
463
+ and buffer-local values of |global-local| options. Use
464
  |python-window|.options if option is window-local,
465
+ this object will raise KeyError. If option is
466
  |global-local| and local value is missing getting it
467
  will return None.
468
+ b.name String, RW. Contains buffer name (full path).
469
  Note: when assigning to b.name |BufFilePre| and
470
  |BufFilePost| autocommands are launched.
471
+ b.number Buffer number. Can be used as |python-buffers| key.
472
  Read-only.
473
+ b.valid True or False. Buffer object becomes invalid when
474
  corresponding buffer is wiped out.
475
 
476
  The buffer object methods are:
 
543
  ==============================================================================
544
  5. Window objects *python-window*
545
 
546
+ Window objects represent vim windows. You can obtain them in a number of
547
+ ways:
548
  - via vim.current.window (|python-current|)
549
  - from indexing vim.windows (|python-windows|)
550
  - from indexing "windows" attribute of a tab page (|python-tabpage|)
runtime/doc/if_ruby.txt CHANGED
@@ -1,4 +1,4 @@
1
- *if_ruby.txt* For Vim version 9.1. Last change: 2019 Jul 21
2
 
3
 
4
  VIM REFERENCE MANUAL by Shugo Maeda
@@ -69,14 +69,14 @@ To see what version of Ruby you have: >
69
  *:rubydo* *:rubyd* *E265*
70
  :[range]rubyd[o] {cmd} Evaluate Ruby command {cmd} for each line in the
71
  [range], with $_ being set to the text of each line in
72
- turn, without a trailing <EOL>. Setting $_ will change
73
- the text, but note that it is not possible to add or
74
- delete lines using this command.
75
  The default for [range] is the whole file: "1,$".
76
 
77
  *:rubyfile* *:rubyf*
78
- :rubyf[ile] {file} Execute the Ruby script in {file}. This is the same as
79
- `:ruby load 'file'`, but allows file name completion.
80
 
81
  Executing Ruby commands is not possible in the |sandbox|.
82
 
@@ -148,8 +148,8 @@ Class Methods:
148
 
149
  current Returns the current buffer object.
150
  count Returns the number of buffers.
151
- self[{n}] Returns the buffer object for the number {n}. The first number
152
- is 0.
153
 
154
  Methods:
155
 
@@ -157,10 +157,10 @@ name Returns the full name of the buffer.
157
  number Returns the number of the buffer.
158
  count Returns the number of lines.
159
  length Returns the number of lines.
160
- self[{n}] Returns a line from the buffer. {n} is the line number.
161
  self[{n}] = {str}
162
- Sets a line in the buffer. {n} is the line number.
163
- delete({n}) Deletes a line from the buffer. {n} is the line number.
164
  append({n}, {str})
165
  Appends a line after the line {n}.
166
  line Returns the current line of the buffer if the buffer is
@@ -178,8 +178,8 @@ Class Methods:
178
 
179
  current Returns the current window object.
180
  count Returns the number of windows.
181
- self[{n}] Returns the window object for the number {n}. The first number
182
- is 0.
183
 
184
  Methods:
185
 
 
1
+ *if_ruby.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Shugo Maeda
 
69
  *:rubydo* *:rubyd* *E265*
70
  :[range]rubyd[o] {cmd} Evaluate Ruby command {cmd} for each line in the
71
  [range], with $_ being set to the text of each line in
72
+ turn, without a trailing <EOL>. Setting $_ will
73
+ change the text, but note that it is not possible to
74
+ add or delete lines using this command.
75
  The default for [range] is the whole file: "1,$".
76
 
77
  *:rubyfile* *:rubyf*
78
+ :rubyf[ile] {file} Execute the Ruby script in {file}. This is the same
79
+ as `:ruby load 'file'`, but allows file name completion.
80
 
81
  Executing Ruby commands is not possible in the |sandbox|.
82
 
 
148
 
149
  current Returns the current buffer object.
150
  count Returns the number of buffers.
151
+ self[{n}] Returns the buffer object for the number {n}. The first
152
+ number is 0.
153
 
154
  Methods:
155
 
 
157
  number Returns the number of the buffer.
158
  count Returns the number of lines.
159
  length Returns the number of lines.
160
+ self[{n}] Returns a line from the buffer. {n} is the line number.
161
  self[{n}] = {str}
162
+ Sets a line in the buffer. {n} is the line number.
163
+ delete({n}) Deletes a line from the buffer. {n} is the line number.
164
  append({n}, {str})
165
  Appends a line after the line {n}.
166
  line Returns the current line of the buffer if the buffer is
 
178
 
179
  current Returns the current window object.
180
  count Returns the number of windows.
181
+ self[{n}] Returns the window object for the number {n}. The first
182
+ number is 0.
183
 
184
  Methods:
185
 
runtime/doc/if_tcl.txt CHANGED
@@ -1,4 +1,4 @@
1
- *if_tcl.txt* For Vim version 9.1. Last change: 2025 Aug 29
2
 
3
 
4
  VIM REFERENCE MANUAL by Ingo Wilken
@@ -234,8 +234,8 @@ The ::vim::current(window) variable contains the name of the window command
234
  for the current window. A window command is automatically deleted when the
235
  corresponding vim window is closed.
236
 
237
- Let's assume the name of the window command is stored in the Tcl variable "win",
238
- i.e. "$win" calls the command. The following options are available: >
239
 
240
  $win buffer # Create Tcl command for window's buffer.
241
  $win command {cmd} # Execute Ex command in windows context.
@@ -264,7 +264,8 @@ Options:
264
  array set here [$win cursor]
265
  < "here(row)" and "here(column)" now contain the cursor position.
266
  With a single argument, the argument is interpreted as the name of a
267
- Tcl array variable, which must contain two elements "row" and "column".
 
268
  These are used to set the cursor to the new position: >
269
  $win cursor here ;# not $here !
270
  < With two arguments, sets the cursor to the specified row and column: >
@@ -313,8 +314,8 @@ changed, all marks in the buffer are automatically adjusted. Any changes to
313
  the buffer's contents made by Tcl commands can be undone with the "undo" vim
314
  command (see |undo|).
315
 
316
- Let's assume the name of the buffer command is stored in the Tcl variable "buf",
317
- i.e. "$buf" calls the command. The following options are available: >
318
 
319
  $buf append {n} {str} # Append a line to buffer, after line {n}.
320
  $buf command {cmd} # Execute Ex command in buffers context.
@@ -404,8 +405,8 @@ Options:
404
  deleted from the buffer.
405
 
406
  $buf windows *tcl-buffer-windows*
407
- Creates a window command for each window that displays this buffer, and
408
- returns a list of the command names as the result.
409
  Example: >
410
  set winlist [$buf windows]
411
  foreach win $winlist { $win height 4 }
 
1
+ *if_tcl.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Ingo Wilken
 
234
  for the current window. A window command is automatically deleted when the
235
  corresponding vim window is closed.
236
 
237
+ Let's assume the name of the window command is stored in the Tcl variable
238
+ "win", i.e. "$win" calls the command. The following options are available: >
239
 
240
  $win buffer # Create Tcl command for window's buffer.
241
  $win command {cmd} # Execute Ex command in windows context.
 
264
  array set here [$win cursor]
265
  < "here(row)" and "here(column)" now contain the cursor position.
266
  With a single argument, the argument is interpreted as the name of a
267
+ Tcl array variable, which must contain two elements "row" and
268
+ "column".
269
  These are used to set the cursor to the new position: >
270
  $win cursor here ;# not $here !
271
  < With two arguments, sets the cursor to the specified row and column: >
 
314
  the buffer's contents made by Tcl commands can be undone with the "undo" vim
315
  command (see |undo|).
316
 
317
+ Let's assume the name of the buffer command is stored in the Tcl variable
318
+ "buf", i.e. "$buf" calls the command. The following options are available: >
319
 
320
  $buf append {n} {str} # Append a line to buffer, after line {n}.
321
  $buf command {cmd} # Execute Ex command in buffers context.
 
405
  deleted from the buffer.
406
 
407
  $buf windows *tcl-buffer-windows*
408
+ Creates a window command for each window that displays this buffer,
409
+ and returns a list of the command names as the result.
410
  Example: >
411
  set winlist [$buf windows]
412
  foreach win $winlist { $win height 4 }
runtime/doc/indent.txt CHANGED
@@ -1,4 +1,4 @@
1
- *indent.txt* For Vim version 9.1. Last change: 2024 Dec 16
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
@@ -44,7 +44,8 @@ These five options control C program indenting:
44
  'cinkeys' Specifies which keys trigger reindenting in insert mode.
45
  'cinoptions' Sets your preferred indent style.
46
  'cinwords' Defines keywords that start an extra indent in the next line.
47
- 'cinscopedecls' Defines strings that are recognized as a C++ scope declaration.
 
48
 
49
  If 'lisp' is not on and 'equalprg' is empty, the "=" operator indents using
50
  Vim's built-in algorithm rather than calling an external program.
@@ -229,8 +230,8 @@ The examples below assume a 'shiftwidth' of 4.
229
  } } }
230
  <
231
  *cino-L*
232
- LN Controls placement of jump labels. If N is negative, the label
233
- will be placed at column 1. If N is non-negative, the indent of
234
  the label will be the prevailing indent minus N. (default -1).
235
 
236
  cino= cino=L2 cino=Ls >
@@ -291,8 +292,8 @@ The examples below assume a 'shiftwidth' of 4.
291
  <
292
  *cino-g*
293
  gN Place C++ scope declarations N characters from the indent of the
294
- block they are in. (default 'shiftwidth'). By default, a scope
295
- declaration is "public:", "protected:" or "private:". This can
296
  be adjusted with the 'cinscopedecls' option.
297
 
298
  cino= cino=g0 >
@@ -714,13 +715,13 @@ FORTRAN *ft-fortran-indent*
714
 
715
  Block if, select case, select type, select rank, where, forall, type,
716
  interface, associate, block, enum, critical, and change team constructs are
717
- indented. The indenting of subroutines, functions, modules, and program blocks
718
- is optional. Comments, labeled statements, and continuation lines are indented
719
- if the Fortran is in free source form, whereas they are not indented if the
720
- Fortran is in fixed source form because of the left margin requirements. Hence
721
- manual indent corrections will be necessary for labeled statements and
722
- continuation lines when fixed source form is being used. For further
723
- discussion of the method used for the detection of source format see
724
  |ft-fortran-syntax|.
725
 
726
  Do loops ~
@@ -819,19 +820,19 @@ Idris 2 indentation can be configured with several variables that control the
819
  indentation level for different language constructs:
820
 
821
  The "g:idris2_indent_if" variable controls the indentation of `then` and `else`
822
- blocks after `if` statements. Defaults to 3.
823
 
824
  The "g:idris2_indent_case" variable controls the indentation of patterns in
825
- `case` expressions. Defaults to 5.
826
 
827
  The "g:idris2_indent_let" variable controls the indentation after `let`
828
- bindings. Defaults to 4.
829
 
830
  The "g:idris2_indent_rewrite" variable controls the indentation after `rewrite`
831
- expressions. Defaults to 8.
832
 
833
  The "g:idris2_indent_where" variable controls the indentation of `where`
834
- blocks. Defaults to 6.
835
 
836
  The "g:idris2_indent_do" variable controls the indentation in `do` blocks.
837
  Defaults to 3.
@@ -951,7 +952,7 @@ To indent 'case:' and 'default:' statements in switch() blocks: >
951
 
952
  In PHP braces are not required inside 'case/default' blocks therefore 'case:'
953
  and 'default:' are indented at the same level than the 'switch()' to avoid
954
- meaningless indentation. You can use the above option to return to the
955
  traditional way.
956
  -------------
957
 
@@ -978,7 +979,7 @@ You will obtain the following result: >
978
  Extra indentation levels to add to parameters in multi-line function calls. >
979
  let g:PHP_IndentFunctionCallParameters = 1
980
 
981
- Function call arguments will indent 1 extra level. For two-space indentation: >
982
 
983
  function call_the_thing(
984
  $with_this,
@@ -997,7 +998,7 @@ Extra indentation levels to add to arguments in multi-line function
997
  definitions. >
998
  let g:PHP_IndentFunctionDeclarationParameters = 1
999
 
1000
- Function arguments in declarations will indent 1 extra level. For two-space
1001
  indentation: >
1002
 
1003
  function call_the_thing(
@@ -1027,8 +1028,8 @@ Indent after a nested paren: >
1027
  Indent for a continuation line: >
1028
  let g:python_indent.continue = 'shiftwidth() * 2'
1029
 
1030
- By default, the closing paren on a multiline construct lines up under the first
1031
- non-whitespace character of the previous line.
1032
  If you prefer that it's lined up under the first character of the line that
1033
  starts the multiline construct, reset this key: >
1034
  let g:python_indent.closed_paren_align_last_line = v:false
@@ -1053,15 +1054,15 @@ For backward compatibility, these variables are also supported: >
1053
 
1054
  R *ft-r-indent*
1055
 
1056
- Function arguments are aligned if they span for multiple lines. If you prefer
1057
  do not have the arguments of functions aligned, put in your |vimrc|:
1058
  >
1059
  let r_indent_align_args = 0
1060
  <
1061
  All lines beginning with a comment character, #, get the same indentation
1062
- level of the normal R code. Users of Emacs/ESS may be used to have lines
1063
  beginning with a single # indented in the 40th column, ## indented as R code,
1064
- and ### not indented. If you prefer that lines beginning with comment
1065
  characters are aligned as they are by Emacs/ESS, put in your |vimrc|:
1066
  >
1067
  let r_indent_ess_comments = 1
@@ -1072,8 +1073,8 @@ r_indent_comment_column, as in the example below:
1072
  >
1073
  let r_indent_comment_column = 30
1074
  <
1075
- Any code after a line that ends with "<-" is indented. Emacs/ESS does not
1076
- indent the code if it is a top-level function. If you prefer a behavior like
1077
  Emacs/ESS one in this regard, put in your |vimrc|:
1078
  >
1079
  let r_indent_ess_compatible = 1
@@ -1088,7 +1089,7 @@ Below is an example of indentation with and without this option enabled:
1088
  } }
1089
  <
1090
  The code will be indented after lines that match the pattern
1091
- `'\(&\||\|+\|-\|\*\|/\|=\|\~\|%\|->\)\s*$'`. If you want indentation after
1092
  lines that match a different pattern, you should set the appropriate value of
1093
  `r_indent_op_pattern` in your |vimrc|.
1094
 
@@ -1153,7 +1154,7 @@ Make sure to do ":set cmdheight=2" first to allow the display of the message.
1153
 
1154
  VHDL *ft-vhdl-indent*
1155
 
1156
- Alignment of generic/port mapping statements are performed by default. This
1157
  causes the following alignment example: >
1158
 
1159
  ENTITY sync IS
@@ -1183,7 +1184,7 @@ to the .vimrc file, which causes the previous alignment example to change: >
1183
  ----------------------------------------
1184
 
1185
  Alignment of right-hand side assignment "<=" statements are performed by
1186
- default. This causes the following alignment example: >
1187
 
1188
  sig_out <= (bus_a(1) AND
1189
  (sig_b OR sig_c)) OR
@@ -1201,9 +1202,9 @@ to the .vimrc file, which causes the previous alignment example to change: >
1201
 
1202
  ----------------------------------------
1203
 
1204
- Full-line comments (lines that begin with "--") are indented to be aligned with
1205
- the very previous line's comment, PROVIDED that a whitespace follows after
1206
- "--".
1207
 
1208
  For example: >
1209
 
@@ -1255,9 +1256,9 @@ results in: >
1255
  Notice that "--debug_code:" does not align with "-- comment 2"
1256
  because there is no whitespace that follows after "--" in "--debug_code:".
1257
 
1258
- Given the dynamic nature of indenting comments, indenting should be done TWICE.
1259
- On the first pass, code will be indented. On the second pass, full-line
1260
- comments will be indented according to the correctly indented code.
1261
 
1262
 
1263
  VIM *ft-vim-indent*
 
1
+ *indent.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
 
44
  'cinkeys' Specifies which keys trigger reindenting in insert mode.
45
  'cinoptions' Sets your preferred indent style.
46
  'cinwords' Defines keywords that start an extra indent in the next line.
47
+ 'cinscopedecls' Defines strings that are recognized as a C++ scope
48
+ declaration.
49
 
50
  If 'lisp' is not on and 'equalprg' is empty, the "=" operator indents using
51
  Vim's built-in algorithm rather than calling an external program.
 
230
  } } }
231
  <
232
  *cino-L*
233
+ LN Controls placement of jump labels. If N is negative, the label
234
+ will be placed at column 1. If N is non-negative, the indent of
235
  the label will be the prevailing indent minus N. (default -1).
236
 
237
  cino= cino=L2 cino=Ls >
 
292
  <
293
  *cino-g*
294
  gN Place C++ scope declarations N characters from the indent of the
295
+ block they are in. (default 'shiftwidth'). By default, a scope
296
+ declaration is "public:", "protected:" or "private:". This can
297
  be adjusted with the 'cinscopedecls' option.
298
 
299
  cino= cino=g0 >
 
715
 
716
  Block if, select case, select type, select rank, where, forall, type,
717
  interface, associate, block, enum, critical, and change team constructs are
718
+ indented. The indenting of subroutines, functions, modules, and program
719
+ blocks is optional. Comments, labeled statements, and continuation lines are
720
+ indented if the Fortran is in free source form, whereas they are not indented
721
+ if the Fortran is in fixed source form because of the left margin
722
+ requirements. Hence manual indent corrections will be necessary for labeled
723
+ statements and continuation lines when fixed source form is being used. For
724
+ further discussion of the method used for the detection of source format see
725
  |ft-fortran-syntax|.
726
 
727
  Do loops ~
 
820
  indentation level for different language constructs:
821
 
822
  The "g:idris2_indent_if" variable controls the indentation of `then` and `else`
823
+ blocks after `if` statements. Defaults to 3.
824
 
825
  The "g:idris2_indent_case" variable controls the indentation of patterns in
826
+ `case` expressions. Defaults to 5.
827
 
828
  The "g:idris2_indent_let" variable controls the indentation after `let`
829
+ bindings. Defaults to 4.
830
 
831
  The "g:idris2_indent_rewrite" variable controls the indentation after `rewrite`
832
+ expressions. Defaults to 8.
833
 
834
  The "g:idris2_indent_where" variable controls the indentation of `where`
835
+ blocks. Defaults to 6.
836
 
837
  The "g:idris2_indent_do" variable controls the indentation in `do` blocks.
838
  Defaults to 3.
 
952
 
953
  In PHP braces are not required inside 'case/default' blocks therefore 'case:'
954
  and 'default:' are indented at the same level than the 'switch()' to avoid
955
+ meaningless indentation. You can use the above option to return to the
956
  traditional way.
957
  -------------
958
 
 
979
  Extra indentation levels to add to parameters in multi-line function calls. >
980
  let g:PHP_IndentFunctionCallParameters = 1
981
 
982
+ Function call arguments will indent 1 extra level. For two-space indentation: >
983
 
984
  function call_the_thing(
985
  $with_this,
 
998
  definitions. >
999
  let g:PHP_IndentFunctionDeclarationParameters = 1
1000
 
1001
+ Function arguments in declarations will indent 1 extra level. For two-space
1002
  indentation: >
1003
 
1004
  function call_the_thing(
 
1028
  Indent for a continuation line: >
1029
  let g:python_indent.continue = 'shiftwidth() * 2'
1030
 
1031
+ By default, the closing paren on a multiline construct lines up under the
1032
+ first non-whitespace character of the previous line.
1033
  If you prefer that it's lined up under the first character of the line that
1034
  starts the multiline construct, reset this key: >
1035
  let g:python_indent.closed_paren_align_last_line = v:false
 
1054
 
1055
  R *ft-r-indent*
1056
 
1057
+ Function arguments are aligned if they span for multiple lines. If you prefer
1058
  do not have the arguments of functions aligned, put in your |vimrc|:
1059
  >
1060
  let r_indent_align_args = 0
1061
  <
1062
  All lines beginning with a comment character, #, get the same indentation
1063
+ level of the normal R code. Users of Emacs/ESS may be used to have lines
1064
  beginning with a single # indented in the 40th column, ## indented as R code,
1065
+ and ### not indented. If you prefer that lines beginning with comment
1066
  characters are aligned as they are by Emacs/ESS, put in your |vimrc|:
1067
  >
1068
  let r_indent_ess_comments = 1
 
1073
  >
1074
  let r_indent_comment_column = 30
1075
  <
1076
+ Any code after a line that ends with "<-" is indented. Emacs/ESS does not
1077
+ indent the code if it is a top-level function. If you prefer a behavior like
1078
  Emacs/ESS one in this regard, put in your |vimrc|:
1079
  >
1080
  let r_indent_ess_compatible = 1
 
1089
  } }
1090
  <
1091
  The code will be indented after lines that match the pattern
1092
+ `'\(&\||\|+\|-\|\*\|/\|=\|\~\|%\|->\)\s*$'`. If you want indentation after
1093
  lines that match a different pattern, you should set the appropriate value of
1094
  `r_indent_op_pattern` in your |vimrc|.
1095
 
 
1154
 
1155
  VHDL *ft-vhdl-indent*
1156
 
1157
+ Alignment of generic/port mapping statements are performed by default. This
1158
  causes the following alignment example: >
1159
 
1160
  ENTITY sync IS
 
1184
  ----------------------------------------
1185
 
1186
  Alignment of right-hand side assignment "<=" statements are performed by
1187
+ default. This causes the following alignment example: >
1188
 
1189
  sig_out <= (bus_a(1) AND
1190
  (sig_b OR sig_c)) OR
 
1202
 
1203
  ----------------------------------------
1204
 
1205
+ Full-line comments (lines that begin with "--") are indented to be aligned
1206
+ with the very previous line's comment, PROVIDED that a whitespace follows
1207
+ after "--".
1208
 
1209
  For example: >
1210
 
 
1256
  Notice that "--debug_code:" does not align with "-- comment 2"
1257
  because there is no whitespace that follows after "--" in "--debug_code:".
1258
 
1259
+ Given the dynamic nature of indenting comments, indenting should be done
1260
+ TWICE. On the first pass, code will be indented. On the second pass,
1261
+ full-line comments will be indented according to the correctly indented code.
1262
 
1263
 
1264
  VIM *ft-vim-indent*
runtime/doc/insert.txt CHANGED
@@ -130,7 +130,7 @@ CTRL-R {register} *i_CTRL-R*
130
  '.' the last inserted text
131
  *i_CTRL-R_-*
132
  '-' the last small (less than a line) delete
133
- register. This is repeatable using |.| since
134
  it remembers the register to put instead of
135
  the literal text to insert.
136
  *i_CTRL-R_=*
@@ -167,12 +167,12 @@ CTRL-R CTRL-R {register} *i_CTRL-R_CTRL-R*
167
  CTRL-R CTRL-O {register} *i_CTRL-R_CTRL-O*
168
  Insert the contents of a register literally and don't
169
  auto-indent. Does the same as pasting with the mouse
170
- |<MiddleMouse>|. When the register is linewise this will
171
  insert the text above the current line, like with `P`.
172
  The '.' register (last inserted text) is still inserted as
173
  typed.
174
  After this command, the '.' register contains the command
175
- typed and not the text. I.e., the literals "^R^O" and not the
176
  text from the register.
177
  Does not replace characters in |Replace-mode|!
178
 
@@ -182,7 +182,7 @@ CTRL-R CTRL-P {register} *i_CTRL-R_CTRL-P*
182
  The '.' register (last inserted text) is still inserted as
183
  typed.
184
  After this command, the '.' register contains the command
185
- typed and not the text. I.e., the literals "^R^P" and not the
186
  text from the register.
187
  Does not replace characters in |Replace-mode|!
188
 
@@ -559,10 +559,10 @@ extra spaces to get where you want to be.
559
 
560
  *ins-smarttab*
561
  When the 'smarttab' option is on, the <Tab> key indents by 'shiftwidth' if the
562
- cursor is in leading whitespace. The <BS> key has the opposite effect. This
563
- behaves as if 'softtabstop' were set to the value of 'shiftwidth'. This option
564
- allows the user to set 'softtabstop' to a value other than 'shiftwidth' and
565
- still use the <Tab> key for indentation.
566
 
567
  ==============================================================================
568
  5. Replace mode *Replace* *Replace-mode* *mode-replace*
@@ -663,7 +663,8 @@ not a valid CTRL-X mode command. Valid keys are the CTRL-X command itself,
663
  CTRL-N (next), and CTRL-P (previous).
664
 
665
  By default, the possible completions are showed in a menu and the first
666
- completion is inserted into the text. This can be adjusted with 'completeopt'.
 
667
 
668
  To get the current completion information, |complete_info()| can be used.
669
  Also see the 'infercase' option if you want to adjust the case of the match.
@@ -889,7 +890,7 @@ Completing keywords with 'thesaurusfunc' *compl-thesaurusfunc*
889
 
890
  If the 'thesaurusfunc' option is set, then the user specified function is
891
  invoked to get the list of completion matches and the 'thesaurus' option is
892
- not used. See |complete-functions| for an explanation of how the function is
893
  invoked and what it should return.
894
 
895
  Here is an example that uses the "aiksaurus" command (provided by Magnus
@@ -1139,8 +1140,8 @@ CTRL-X CTRL-Z Stop completion without changing the text.
1139
  AUTOCOMPLETION *ins-autocompletion*
1140
 
1141
  Vim can display a completion menu as you type, similar to using |i_CTRL-N|,
1142
- but triggered automatically. See 'autocomplete'. The menu items are collected
1143
- from the sources listed in the 'complete' option, in order.
1144
 
1145
  A decaying timeout keeps Vim responsive. Sources earlier in the 'complete'
1146
  list get more time (higher priority), but all sources receive at least a small
@@ -1248,7 +1249,7 @@ items:
1248
  items to be equal; when omitted zero is used, thus
1249
  items that only differ in case are added
1250
  equal when non-zero, always treat this item to be equal when
1251
- comparing. Which means, "equal=1" disables filtering
1252
  of this item.
1253
  dup when non-zero this match will be added even when an
1254
  item with the same word is already present.
@@ -1264,7 +1265,7 @@ items:
1264
  properties (with higher priority) like strikethrough
1265
  to the completion items abbreviation
1266
  kind_hlgroup an additional highlight group specifically for setting
1267
- the highlight attributes of the completion kind. When
1268
  this field is present, it will override the
1269
  |hl-PmenuKind| highlight group, allowing for the
1270
  customization of ctermfg and guifg properties for the
@@ -1455,7 +1456,8 @@ any printable, non-white character:
1455
  Add this character and reduce the number of matches.
1456
 
1457
  In all three states these can be used:
1458
- CTRL-Y Yes: Accept the currently selected match and stop completion.
 
1459
  CTRL-E End completion, go back to what was there before selecting a
1460
  match (what was typed or longest common string).
1461
  <PageUp> Select a match several entries back, but don't insert it.
@@ -1559,7 +1561,7 @@ XHTML *ft-xhtml-omni*
1559
 
1560
  CTRL-X CTRL-O provides completion of various elements of (X)HTML files. It is
1561
  designed to support writing of XHTML 1.0 Strict files but will also work for
1562
- other versions of HTML. Features:
1563
 
1564
  - after "<" complete tag name depending on context (no div suggestion inside
1565
  of an a tag); '/>' indicates empty tags
@@ -1577,7 +1579,7 @@ other versions of HTML. Features:
1577
 
1578
  Note: When used first time completion menu will be shown with little delay
1579
  - this is time needed for loading of data file.
1580
- Note: Completion may fail in badly formatted documents. In such case try to
1581
  run |:make| command to detect formatting problems.
1582
 
1583
 
@@ -1591,7 +1593,7 @@ When doing completion outside of any other tag you will have possibility to
1591
  choose DOCTYPE and the appropriate data file will be loaded and used for all
1592
  next completions.
1593
 
1594
- More about format of data file in |xml-omni-datafile|. Some of the data files
1595
  may be found on the Vim website (|www|).
1596
 
1597
  Note that b:html_omni_flavor may point to a file with any XML data. This
@@ -1620,8 +1622,8 @@ of external files).
1620
  DOM compatibility
1621
 
1622
  At the moment (beginning of 2006) there are two main browsers - MS Internet
1623
- Explorer and Mozilla Firefox. These two applications are covering over 90% of
1624
- market. Theoretically standards are created by W3C organisation
1625
  (http://www.w3c.org) but they are not always followed/implemented.
1626
 
1627
  IE FF W3C Omni completion ~
@@ -1631,16 +1633,16 @@ market. Theoretically standards are created by W3C organisation
1631
  - + - - ~
1632
 
1633
  Regardless from state of implementation in browsers but if element is defined
1634
- in standards, completion plugin will place element in suggestion list. When
1635
  both major engines implemented element, even if this is not in standards it
1636
- will be suggested. All other elements are not placed in suggestion list.
1637
 
1638
 
1639
  PHP *ft-php-omni*
1640
 
1641
  Completion of PHP code requires a tags file for completion of data from
1642
- external files and for class aware completion. You should use Universal/
1643
- Exuberant ctags version 5.5.4 or newer. You can find it here:
1644
 
1645
  Universal Ctags: https://ctags.io
1646
  Exuberant Ctags: http://ctags.sourceforge.net
@@ -1648,11 +1650,12 @@ Exuberant ctags version 5.5.4 or newer. You can find it here:
1648
  Script completes:
1649
 
1650
  - after $ variables name
1651
- - if variable was declared as object add "->", if tags file is available show
1652
- name of class
1653
  - after "->" complete only function and variable names specific for given
1654
- class. To find class location and contents tags file is required. Because
1655
- PHP isn't strongly typed language user can use @var tag to declare class: >
 
1656
 
1657
  /* @var $myVar myClass */
1658
  $myVar->
@@ -1670,11 +1673,11 @@ Script completes:
1670
 
1671
 
1672
  Note: when doing completion first time Vim will load all necessary data into
1673
- memory. It may take several seconds. After next use of completion delay
1674
  should not be noticeable.
1675
 
1676
- Script detects if cursor is inside <?php ?> tags. If it is outside it will
1677
- automatically switch to HTML/CSS/JavaScript completion. Note: contrary to
1678
  original HTML files completion of tags (and only tags) isn't context aware.
1679
 
1680
 
@@ -1701,11 +1704,11 @@ The completions provided by CTRL-X CTRL-O are sensitive to the context:
1701
 
1702
  Notes:
1703
  - Vim will load/evaluate code in order to provide completions. This may
1704
- cause some code execution, which may be a concern. This is no longer
1705
  enabled by default, to enable this feature add >
1706
  let g:rubycomplete_buffer_loading = 1
1707
  <- In context 1 above, Vim can parse the entire buffer to add a list of
1708
- classes to the completion results. This feature is turned off by default,
1709
  to enable it add >
1710
  let g:rubycomplete_classes_in_global = 1
1711
  < to your vimrc
@@ -1713,7 +1716,7 @@ Notes:
1713
  - In context 3 above, Vim will attempt to determine the methods supported by
1714
  the object.
1715
  - Vim can detect and load the Rails environment for files within a rails
1716
- project. The feature is disabled by default, to enable it add >
1717
  let g:rubycomplete_rails = 1
1718
  < to your vimrc
1719
 
@@ -1750,11 +1753,11 @@ a look at the PHP filetype to see how this works.
1750
  If you edit a file called, index.php, run the following command: >
1751
  syntax list
1752
 
1753
- The first thing you will notice is that there are many different syntax groups.
1754
- The PHP language can include elements from different languages like HTML,
1755
- JavaScript and many more. The syntax plugin will only include syntax groups
1756
- that begin with the filetype, "php", in this case. For example these syntax
1757
- groups are included by default with the PHP: phpEnvVar, phpIntVar,
1758
  phpFunctions.
1759
 
1760
  If you wish non-filetype syntax items to also be included, you can use a
@@ -1873,7 +1876,7 @@ be used in commands. It should be a unique name which will not create
1873
  conflicts. For example, the name xhtml10s.vim means it is the data file for
1874
  XHTML 1.0 Strict.
1875
 
1876
- Each file contains a variable with a name like g:xmldata_xhtml10s . It is
1877
  a compound from two parts:
1878
 
1879
  1. "g:xmldata_" general prefix, constant for all data files
@@ -2090,7 +2093,7 @@ These two commands will keep on asking for lines, until you type a line
2090
  containing only a ".". Watch out for lines starting with a backslash, see
2091
  |line-continuation|.
2092
 
2093
- Text typed after a "|" command separator is used first. So the following
2094
  command in ex mode: >
2095
  :a|one
2096
  two
 
130
  '.' the last inserted text
131
  *i_CTRL-R_-*
132
  '-' the last small (less than a line) delete
133
+ register. This is repeatable using |.| since
134
  it remembers the register to put instead of
135
  the literal text to insert.
136
  *i_CTRL-R_=*
 
167
  CTRL-R CTRL-O {register} *i_CTRL-R_CTRL-O*
168
  Insert the contents of a register literally and don't
169
  auto-indent. Does the same as pasting with the mouse
170
+ |<MiddleMouse>|. When the register is linewise this will
171
  insert the text above the current line, like with `P`.
172
  The '.' register (last inserted text) is still inserted as
173
  typed.
174
  After this command, the '.' register contains the command
175
+ typed and not the text. I.e., the literals "^R^O" and not the
176
  text from the register.
177
  Does not replace characters in |Replace-mode|!
178
 
 
182
  The '.' register (last inserted text) is still inserted as
183
  typed.
184
  After this command, the '.' register contains the command
185
+ typed and not the text. I.e., the literals "^R^P" and not the
186
  text from the register.
187
  Does not replace characters in |Replace-mode|!
188
 
 
559
 
560
  *ins-smarttab*
561
  When the 'smarttab' option is on, the <Tab> key indents by 'shiftwidth' if the
562
+ cursor is in leading whitespace. The <BS> key has the opposite effect. This
563
+ behaves as if 'softtabstop' were set to the value of 'shiftwidth'. This
564
+ option allows the user to set 'softtabstop' to a value other than 'shiftwidth'
565
+ and still use the <Tab> key for indentation.
566
 
567
  ==============================================================================
568
  5. Replace mode *Replace* *Replace-mode* *mode-replace*
 
663
  CTRL-N (next), and CTRL-P (previous).
664
 
665
  By default, the possible completions are showed in a menu and the first
666
+ completion is inserted into the text. This can be adjusted with
667
+ 'completeopt'.
668
 
669
  To get the current completion information, |complete_info()| can be used.
670
  Also see the 'infercase' option if you want to adjust the case of the match.
 
890
 
891
  If the 'thesaurusfunc' option is set, then the user specified function is
892
  invoked to get the list of completion matches and the 'thesaurus' option is
893
+ not used. See |complete-functions| for an explanation of how the function is
894
  invoked and what it should return.
895
 
896
  Here is an example that uses the "aiksaurus" command (provided by Magnus
 
1140
  AUTOCOMPLETION *ins-autocompletion*
1141
 
1142
  Vim can display a completion menu as you type, similar to using |i_CTRL-N|,
1143
+ but triggered automatically. See 'autocomplete'. The menu items are
1144
+ collected from the sources listed in the 'complete' option, in order.
1145
 
1146
  A decaying timeout keeps Vim responsive. Sources earlier in the 'complete'
1147
  list get more time (higher priority), but all sources receive at least a small
 
1249
  items to be equal; when omitted zero is used, thus
1250
  items that only differ in case are added
1251
  equal when non-zero, always treat this item to be equal when
1252
+ comparing. Which means, "equal=1" disables filtering
1253
  of this item.
1254
  dup when non-zero this match will be added even when an
1255
  item with the same word is already present.
 
1265
  properties (with higher priority) like strikethrough
1266
  to the completion items abbreviation
1267
  kind_hlgroup an additional highlight group specifically for setting
1268
+ the highlight attributes of the completion kind. When
1269
  this field is present, it will override the
1270
  |hl-PmenuKind| highlight group, allowing for the
1271
  customization of ctermfg and guifg properties for the
 
1456
  Add this character and reduce the number of matches.
1457
 
1458
  In all three states these can be used:
1459
+ CTRL-Y Yes: Accept the currently selected match and stop
1460
+ completion.
1461
  CTRL-E End completion, go back to what was there before selecting a
1462
  match (what was typed or longest common string).
1463
  <PageUp> Select a match several entries back, but don't insert it.
 
1561
 
1562
  CTRL-X CTRL-O provides completion of various elements of (X)HTML files. It is
1563
  designed to support writing of XHTML 1.0 Strict files but will also work for
1564
+ other versions of HTML. Features:
1565
 
1566
  - after "<" complete tag name depending on context (no div suggestion inside
1567
  of an a tag); '/>' indicates empty tags
 
1579
 
1580
  Note: When used first time completion menu will be shown with little delay
1581
  - this is time needed for loading of data file.
1582
+ Note: Completion may fail in badly formatted documents. In such case try to
1583
  run |:make| command to detect formatting problems.
1584
 
1585
 
 
1593
  choose DOCTYPE and the appropriate data file will be loaded and used for all
1594
  next completions.
1595
 
1596
+ More about format of data file in |xml-omni-datafile|. Some of the data files
1597
  may be found on the Vim website (|www|).
1598
 
1599
  Note that b:html_omni_flavor may point to a file with any XML data. This
 
1622
  DOM compatibility
1623
 
1624
  At the moment (beginning of 2006) there are two main browsers - MS Internet
1625
+ Explorer and Mozilla Firefox. These two applications are covering over 90% of
1626
+ market. Theoretically standards are created by W3C organisation
1627
  (http://www.w3c.org) but they are not always followed/implemented.
1628
 
1629
  IE FF W3C Omni completion ~
 
1633
  - + - - ~
1634
 
1635
  Regardless from state of implementation in browsers but if element is defined
1636
+ in standards, completion plugin will place element in suggestion list. When
1637
  both major engines implemented element, even if this is not in standards it
1638
+ will be suggested. All other elements are not placed in suggestion list.
1639
 
1640
 
1641
  PHP *ft-php-omni*
1642
 
1643
  Completion of PHP code requires a tags file for completion of data from
1644
+ external files and for class aware completion. You should use Universal/
1645
+ Exuberant ctags version 5.5.4 or newer. You can find it here:
1646
 
1647
  Universal Ctags: https://ctags.io
1648
  Exuberant Ctags: http://ctags.sourceforge.net
 
1650
  Script completes:
1651
 
1652
  - after $ variables name
1653
+ - if variable was declared as object add "->", if tags file is available
1654
+ show name of class
1655
  - after "->" complete only function and variable names specific for given
1656
+ class. To find class location and contents tags file is required.
1657
+ Because PHP isn't strongly typed language user can use @var tag to declare
1658
+ class: >
1659
 
1660
  /* @var $myVar myClass */
1661
  $myVar->
 
1673
 
1674
 
1675
  Note: when doing completion first time Vim will load all necessary data into
1676
+ memory. It may take several seconds. After next use of completion delay
1677
  should not be noticeable.
1678
 
1679
+ Script detects if cursor is inside <?php ?> tags. If it is outside it will
1680
+ automatically switch to HTML/CSS/JavaScript completion. Note: contrary to
1681
  original HTML files completion of tags (and only tags) isn't context aware.
1682
 
1683
 
 
1704
 
1705
  Notes:
1706
  - Vim will load/evaluate code in order to provide completions. This may
1707
+ cause some code execution, which may be a concern. This is no longer
1708
  enabled by default, to enable this feature add >
1709
  let g:rubycomplete_buffer_loading = 1
1710
  <- In context 1 above, Vim can parse the entire buffer to add a list of
1711
+ classes to the completion results. This feature is turned off by default,
1712
  to enable it add >
1713
  let g:rubycomplete_classes_in_global = 1
1714
  < to your vimrc
 
1716
  - In context 3 above, Vim will attempt to determine the methods supported by
1717
  the object.
1718
  - Vim can detect and load the Rails environment for files within a rails
1719
+ project. The feature is disabled by default, to enable it add >
1720
  let g:rubycomplete_rails = 1
1721
  < to your vimrc
1722
 
 
1753
  If you edit a file called, index.php, run the following command: >
1754
  syntax list
1755
 
1756
+ The first thing you will notice is that there are many different syntax
1757
+ groups. The PHP language can include elements from different languages like
1758
+ HTML, JavaScript and many more. The syntax plugin will only include syntax
1759
+ groups that begin with the filetype, "php", in this case. For example these
1760
+ syntax groups are included by default with the PHP: phpEnvVar, phpIntVar,
1761
  phpFunctions.
1762
 
1763
  If you wish non-filetype syntax items to also be included, you can use a
 
1876
  conflicts. For example, the name xhtml10s.vim means it is the data file for
1877
  XHTML 1.0 Strict.
1878
 
1879
+ Each file contains a variable with a name like g:xmldata_xhtml10s . It is
1880
  a compound from two parts:
1881
 
1882
  1. "g:xmldata_" general prefix, constant for all data files
 
2093
  containing only a ".". Watch out for lines starting with a backslash, see
2094
  |line-continuation|.
2095
 
2096
+ Text typed after a "|" command separator is used first. So the following
2097
  command in ex mode: >
2098
  :a|one
2099
  two
runtime/doc/intro.txt CHANGED
@@ -1,4 +1,4 @@
1
- *intro.txt* For Vim version 9.1. Last change: 2025 Oct 11
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
@@ -99,7 +99,8 @@ There are several mailing lists for Vim:
99
  For discussions about using and improving the Macintosh version of
100
  Vim.
101
  <vim-security@googlegroups.com> *vim-security*
102
- This list is for (privately) discussing security relevant issues of Vim.
 
103
 
104
  See http://www.vim.org/maillist.php for the latest information.
105
 
@@ -236,7 +237,8 @@ Vim would never have become what it is now, without the help of these people!
236
  Felix von Leitner Previous maintainer of Vim Mailing Lists
237
  David Leonard Port of Python extensions to Unix
238
  Avner Lottem Edit in right-to-left windows
239
- Flemming Madsen X11 client-server, various features and patches
 
240
  Tony Mechelynck answers many user questions
241
  Paul Moore Python interface extensions, many patches
242
  Katsuhito Nagano Work on multibyte versions
@@ -606,8 +608,8 @@ Operator-pending mode This is like Normal mode, but after an operator
606
 
607
  Replace mode Replace mode is a special case of Insert mode. You
608
  can do the same things as in Insert mode, but for
609
- each character you enter, one character of the existing
610
- text is deleted. See |Replace-mode|.
611
  If the 'showmode' option is on "-- REPLACE --" is
612
  shown at the bottom of the window.
613
 
 
1
+ *intro.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
 
99
  For discussions about using and improving the Macintosh version of
100
  Vim.
101
  <vim-security@googlegroups.com> *vim-security*
102
+ This list is for (privately) discussing security relevant issues of
103
+ Vim.
104
 
105
  See http://www.vim.org/maillist.php for the latest information.
106
 
 
237
  Felix von Leitner Previous maintainer of Vim Mailing Lists
238
  David Leonard Port of Python extensions to Unix
239
  Avner Lottem Edit in right-to-left windows
240
+ Flemming Madsen X11 client-server, various features and
241
+ patches
242
  Tony Mechelynck answers many user questions
243
  Paul Moore Python interface extensions, many patches
244
  Katsuhito Nagano Work on multibyte versions
 
608
 
609
  Replace mode Replace mode is a special case of Insert mode. You
610
  can do the same things as in Insert mode, but for
611
+ each character you enter, one character of the
612
+ existing text is deleted. See |Replace-mode|.
613
  If the 'showmode' option is on "-- REPLACE --" is
614
  shown at the bottom of the window.
615
 
runtime/doc/map.txt CHANGED
@@ -1,4 +1,4 @@
1
- *map.txt* For Vim version 9.1. Last change: 2025 Aug 06
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
@@ -105,7 +105,7 @@ modes.
105
  map command applies. The mapping may remain defined
106
  for other modes where it applies.
107
  It also works when {lhs} matches the {rhs} of a
108
- mapping. This is for when an abbreviation applied.
109
  Note: Trailing spaces are included in the {lhs}.
110
  See |map-trailing-white|.
111
 
@@ -295,7 +295,7 @@ In case you want the mapping to not do anything, you can have the expression
295
  evaluate to an empty string. If something changed that requires Vim to
296
  go through the main loop (e.g. to update the display), return "\<Ignore>".
297
  This is similar to "nothing" but makes Vim return from the loop that waits for
298
- input. Example: >
299
  func s:OpenPopup()
300
  call popup_create(... arguments ...)
301
  return "\<Ignore>"
@@ -330,7 +330,7 @@ For this reason the following is blocked:
330
  If you want the mapping to do any of these let the returned characters do
331
  that, or use a |<Cmd>| mapping instead.
332
 
333
- You can use getchar(), it consumes typeahead if there is any. E.g., if you
334
  have these mappings: >
335
  inoremap <expr> <C-L> nr2char(getchar())
336
  inoremap <expr> <C-L>x "foo"
@@ -542,7 +542,7 @@ it's just used here for this situation.
542
  The simplest way to load a set of related language mappings is by using the
543
  'keymap' option. See |45.5|.
544
  In Insert mode and in Command-line mode the mappings can be disabled with
545
- the CTRL-^ command |i_CTRL-^| |c_CTRL-^|. These commands change the value of
546
  the 'iminsert' option. When starting to enter a normal command line (not a
547
  search pattern) the mappings are disabled until a CTRL-^ is typed. The state
548
  last used is remembered for Insert mode and Search patterns separately. The
@@ -590,7 +590,7 @@ e.g. from a timer callback. *E1309*
590
 
591
  *:map-verbose*
592
  When 'verbose' is non-zero, the detected and used 'keyprotocol' value will be
593
- displayed in the first line. Also a key map will also display where it was
594
  last defined. Example: >
595
 
596
  :verbose map <C-W>*
@@ -748,7 +748,7 @@ Upper and lowercase differences are ignored.
748
 
749
  *map-comments*
750
  It is not possible to put a comment after these commands, because the '"'
751
- character is considered to be part of the {lhs} or {rhs}. However, one can
752
  use |", since this starts a new, empty command with a comment.
753
 
754
  *map_bar* *map-bar*
@@ -827,7 +827,7 @@ Multiplying a count
827
  When you type a count before triggering a mapping, it's like the count was
828
  typed before the {lhs}. For example, with this mapping: >
829
  :map <F4> 3w
830
- Typing 2<F4> will result in "23w". Thus not moving 2 * 3 words but 23 words.
831
  If you want to multiply counts use the expression register: >
832
  :map <F4> @='3w'<CR>
833
  The part between quotes is the expression being executed. |@=|
@@ -960,7 +960,7 @@ configuration). For that, you can add the line: >
960
 
961
  set convert-meta on
962
 
963
- to your ~/.inputrc file. If you're creating the file, you might want to use: >
964
 
965
  $include /etc/inputrc
966
 
@@ -991,8 +991,8 @@ in Insert mode: >
991
  1.12 MAPPING SUPER-KEYS or COMMAND-KEYS *:map-super-keys* *:map-cmd-key*
992
 
993
  The Super modifier is available in GUI mode (when |gui_running| is 1) for gVim
994
- on Linux and MacVim on Mac OS. If you're on a Mac, this represents the Command
995
- key, on Linux with the GTK GUI it represents the Super key.
996
  The character "D" is used for the Super / Command modifier.
997
 
998
  For example, to map Command-b in Insert mode: >
@@ -1244,7 +1244,7 @@ an additional rule:
1244
  full-id In front of the match is a non-keyword character, or this is where
1245
  the line or insertion starts. Exception: When the abbreviation is
1246
  only one character, it is not recognized if there is a non-keyword
1247
- character in front of it, other than a space or a tab. However, for
1248
  the command line "'<,'>" (or any other marks) is ignored, as if the
1249
  command line starts after it.
1250
 
@@ -1502,8 +1502,8 @@ be the user command ":Cc2" without an argument, or the command ":Cc" with
1502
  argument "2". It is advised to put a space between the command name and the
1503
  argument to avoid these problems.
1504
 
1505
- When using a user-defined command, the command can be abbreviated. However, if
1506
- an abbreviation is not unique, an error will be issued. Furthermore, a
1507
  built-in command will always take precedence.
1508
 
1509
  Example: >
@@ -1519,8 +1519,8 @@ It is recommended that full names for user-defined commands are used in
1519
  scripts.
1520
 
1521
  :com[mand] *:com* *:command*
1522
- List all user-defined commands. When listing commands,
1523
- the characters in the first columns are:
1524
  ! Command has the -bang attribute
1525
  " Command has the -register attribute
1526
  | Command has the -bar attribute
@@ -1535,7 +1535,7 @@ scripts.
1535
 
1536
  *:command-verbose*
1537
  When 'verbose' is non-zero, listing a command will also display where it was
1538
- last defined and any completion argument. Example: >
1539
 
1540
  :verbose command TOhtml
1541
  < Name Args Range Complete Definition ~
@@ -1571,10 +1571,10 @@ See |:verbose-cmd| for more information.
1571
 
1572
  Command attributes ~
1573
  *command-attributes*
1574
- User-defined commands are treated by Vim just like any other Ex commands. They
1575
- can have arguments, or have a range specified. Arguments are subject to
1576
- completion as filenames, buffers, etc. Exactly how this works depends upon the
1577
- command's attributes, which are specified when the command is defined.
1578
 
1579
  When defining a user command in a script, it will be able to call functions
1580
  local to the script and use mappings local to the script. When the user
@@ -1659,7 +1659,7 @@ completion can be enabled:
1659
  -complete=scriptnames sourced script names
1660
  -complete=shellcmd Shell command
1661
  -complete=shellcmdline First is a shell command and subsequent ones
1662
- are filenames. The same behavior as |:!cmd|
1663
  -complete=sign |:sign| suboptions
1664
  -complete=syntax syntax file names 'syntax'
1665
  -complete=syntime |:syntime| suboptions
@@ -1684,8 +1684,8 @@ function with the following signature: >
1684
 
1685
  :function {func}(ArgLead, CmdLine, CursorPos)
1686
 
1687
- The function need not use all these arguments. The function should provide the
1688
- completion candidates as the return value.
1689
 
1690
  For the "custom" argument, the function should return the completion
1691
  candidates one per line in a newline separated string.
@@ -1701,7 +1701,7 @@ The function arguments are:
1701
  The function may use these for determining context. For the "custom"
1702
  argument, it is not necessary to filter candidates against the (implicit
1703
  pattern in) ArgLead. Vim will filter the candidates with its regexp engine
1704
- after function return, and this is probably more efficient in most cases. If
1705
  'wildoptions' contains "fuzzy", then the candidates will be filtered using
1706
  |fuzzy-matching|. For the "customlist" argument, Vim will not
1707
  filter the returned completion candidates and the user supplied function
@@ -1833,8 +1833,8 @@ The valid escape sequences are
1833
  command was executed with a ! modifier, otherwise
1834
  expands to nothing.
1835
  *<mods>* *<q-mods>* *:command-modifiers*
1836
- <mods> The command modifiers, if specified. Otherwise, expands to
1837
- nothing. Supported modifiers are |:aboveleft|, |:belowright|,
1838
  |:botright|, |:browse|, |:confirm|, |:hide|, |:horizontal|,
1839
  |:keepalt|, |:keepjumps|, |:keepmarks|, |:keeppatterns|,
1840
  |:leftabove|, |:lockmarks|, |:noautocmd|, |:noswapfile|,
@@ -1943,9 +1943,9 @@ A more substantial example: >
1943
  :endfunction
1944
  :command -nargs=+ -complete=command Allargs call Allargs(<q-args>)
1945
 
1946
- The command Allargs takes any Vim command(s) as argument and executes it on all
1947
- files in the argument list. Usage example (note use of the "e" flag to ignore
1948
- errors and the "update" command to write modified buffers): >
1949
  :Allargs %s/foo/bar/ge|update
1950
  This will invoke: >
1951
  :call Allargs("%s/foo/bar/ge|update")
 
1
+ *map.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
 
105
  map command applies. The mapping may remain defined
106
  for other modes where it applies.
107
  It also works when {lhs} matches the {rhs} of a
108
+ mapping. This is for when an abbreviation applied.
109
  Note: Trailing spaces are included in the {lhs}.
110
  See |map-trailing-white|.
111
 
 
295
  evaluate to an empty string. If something changed that requires Vim to
296
  go through the main loop (e.g. to update the display), return "\<Ignore>".
297
  This is similar to "nothing" but makes Vim return from the loop that waits for
298
+ input. Example: >
299
  func s:OpenPopup()
300
  call popup_create(... arguments ...)
301
  return "\<Ignore>"
 
330
  If you want the mapping to do any of these let the returned characters do
331
  that, or use a |<Cmd>| mapping instead.
332
 
333
+ You can use getchar(), it consumes typeahead if there is any. E.g., if you
334
  have these mappings: >
335
  inoremap <expr> <C-L> nr2char(getchar())
336
  inoremap <expr> <C-L>x "foo"
 
542
  The simplest way to load a set of related language mappings is by using the
543
  'keymap' option. See |45.5|.
544
  In Insert mode and in Command-line mode the mappings can be disabled with
545
+ the CTRL-^ command |i_CTRL-^| |c_CTRL-^|. These commands change the value of
546
  the 'iminsert' option. When starting to enter a normal command line (not a
547
  search pattern) the mappings are disabled until a CTRL-^ is typed. The state
548
  last used is remembered for Insert mode and Search patterns separately. The
 
590
 
591
  *:map-verbose*
592
  When 'verbose' is non-zero, the detected and used 'keyprotocol' value will be
593
+ displayed in the first line. Also a key map will also display where it was
594
  last defined. Example: >
595
 
596
  :verbose map <C-W>*
 
748
 
749
  *map-comments*
750
  It is not possible to put a comment after these commands, because the '"'
751
+ character is considered to be part of the {lhs} or {rhs}. However, one can
752
  use |", since this starts a new, empty command with a comment.
753
 
754
  *map_bar* *map-bar*
 
827
  When you type a count before triggering a mapping, it's like the count was
828
  typed before the {lhs}. For example, with this mapping: >
829
  :map <F4> 3w
830
+ Typing 2<F4> will result in "23w". Thus not moving 2 * 3 words but 23 words.
831
  If you want to multiply counts use the expression register: >
832
  :map <F4> @='3w'<CR>
833
  The part between quotes is the expression being executed. |@=|
 
960
 
961
  set convert-meta on
962
 
963
+ to your ~/.inputrc file. If you're creating the file, you might want to use: >
964
 
965
  $include /etc/inputrc
966
 
 
991
  1.12 MAPPING SUPER-KEYS or COMMAND-KEYS *:map-super-keys* *:map-cmd-key*
992
 
993
  The Super modifier is available in GUI mode (when |gui_running| is 1) for gVim
994
+ on Linux and MacVim on Mac OS. If you're on a Mac, this represents the
995
+ Command key, on Linux with the GTK GUI it represents the Super key.
996
  The character "D" is used for the Super / Command modifier.
997
 
998
  For example, to map Command-b in Insert mode: >
 
1244
  full-id In front of the match is a non-keyword character, or this is where
1245
  the line or insertion starts. Exception: When the abbreviation is
1246
  only one character, it is not recognized if there is a non-keyword
1247
+ character in front of it, other than a space or a tab. However, for
1248
  the command line "'<,'>" (or any other marks) is ignored, as if the
1249
  command line starts after it.
1250
 
 
1502
  argument "2". It is advised to put a space between the command name and the
1503
  argument to avoid these problems.
1504
 
1505
+ When using a user-defined command, the command can be abbreviated. However,
1506
+ if an abbreviation is not unique, an error will be issued. Furthermore, a
1507
  built-in command will always take precedence.
1508
 
1509
  Example: >
 
1519
  scripts.
1520
 
1521
  :com[mand] *:com* *:command*
1522
+ List all user-defined commands. When listing
1523
+ commands, the characters in the first columns are:
1524
  ! Command has the -bang attribute
1525
  " Command has the -register attribute
1526
  | Command has the -bar attribute
 
1535
 
1536
  *:command-verbose*
1537
  When 'verbose' is non-zero, listing a command will also display where it was
1538
+ last defined and any completion argument. Example: >
1539
 
1540
  :verbose command TOhtml
1541
  < Name Args Range Complete Definition ~
 
1571
 
1572
  Command attributes ~
1573
  *command-attributes*
1574
+ User-defined commands are treated by Vim just like any other Ex commands.
1575
+ They can have arguments, or have a range specified. Arguments are subject to
1576
+ completion as filenames, buffers, etc. Exactly how this works depends upon
1577
+ the command's attributes, which are specified when the command is defined.
1578
 
1579
  When defining a user command in a script, it will be able to call functions
1580
  local to the script and use mappings local to the script. When the user
 
1659
  -complete=scriptnames sourced script names
1660
  -complete=shellcmd Shell command
1661
  -complete=shellcmdline First is a shell command and subsequent ones
1662
+ are filenames. The same behavior as |:!cmd|
1663
  -complete=sign |:sign| suboptions
1664
  -complete=syntax syntax file names 'syntax'
1665
  -complete=syntime |:syntime| suboptions
 
1684
 
1685
  :function {func}(ArgLead, CmdLine, CursorPos)
1686
 
1687
+ The function need not use all these arguments. The function should provide
1688
+ the completion candidates as the return value.
1689
 
1690
  For the "custom" argument, the function should return the completion
1691
  candidates one per line in a newline separated string.
 
1701
  The function may use these for determining context. For the "custom"
1702
  argument, it is not necessary to filter candidates against the (implicit
1703
  pattern in) ArgLead. Vim will filter the candidates with its regexp engine
1704
+ after function return, and this is probably more efficient in most cases. If
1705
  'wildoptions' contains "fuzzy", then the candidates will be filtered using
1706
  |fuzzy-matching|. For the "customlist" argument, Vim will not
1707
  filter the returned completion candidates and the user supplied function
 
1833
  command was executed with a ! modifier, otherwise
1834
  expands to nothing.
1835
  *<mods>* *<q-mods>* *:command-modifiers*
1836
+ <mods> The command modifiers, if specified. Otherwise, expands to
1837
+ nothing. Supported modifiers are |:aboveleft|, |:belowright|,
1838
  |:botright|, |:browse|, |:confirm|, |:hide|, |:horizontal|,
1839
  |:keepalt|, |:keepjumps|, |:keepmarks|, |:keeppatterns|,
1840
  |:leftabove|, |:lockmarks|, |:noautocmd|, |:noswapfile|,
 
1943
  :endfunction
1944
  :command -nargs=+ -complete=command Allargs call Allargs(<q-args>)
1945
 
1946
+ The command Allargs takes any Vim command(s) as argument and executes it on
1947
+ all files in the argument list. Usage example (note use of the "e" flag to
1948
+ ignore errors and the "update" command to write modified buffers): >
1949
  :Allargs %s/foo/bar/ge|update
1950
  This will invoke: >
1951
  :call Allargs("%s/foo/bar/ge|update")
runtime/doc/mbyte.txt CHANGED
@@ -1,4 +1,4 @@
1
- *mbyte.txt* For Vim version 9.1. Last change: 2025 Oct 04
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar et al.
@@ -1138,8 +1138,8 @@ it to the Vim maintainer for inclusion in the distribution:
1138
 
1139
  HEBREW KEYMAP *keymap-hebrew*
1140
 
1141
- This file explains what characters are available in UTF-8 and CP1255 encodings,
1142
- and what the keymaps are to get those characters:
1143
 
1144
  glyph encoding keymap ~
1145
  Char UTF-8 cp1255 hebrew hebrewp name ~
@@ -1270,9 +1270,9 @@ Combining forms:
1270
  ==============================================================================
1271
  10. Input with imactivatefunc() *mbyte-func*
1272
 
1273
- Vim has the 'imactivatefunc' and 'imstatusfunc' options. These are useful to
1274
- activate/deactivate the input method from Vim in any way, also with an external
1275
- command. For example, fcitx provide fcitx-remote command: >
1276
 
1277
  set iminsert=2
1278
  set imsearch=2
 
1
+ *mbyte.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar et al.
 
1138
 
1139
  HEBREW KEYMAP *keymap-hebrew*
1140
 
1141
+ This file explains what characters are available in UTF-8 and CP1255
1142
+ encodings, and what the keymaps are to get those characters:
1143
 
1144
  glyph encoding keymap ~
1145
  Char UTF-8 cp1255 hebrew hebrewp name ~
 
1270
  ==============================================================================
1271
  10. Input with imactivatefunc() *mbyte-func*
1272
 
1273
+ Vim has the 'imactivatefunc' and 'imstatusfunc' options. These are useful to
1274
+ activate/deactivate the input method from Vim in any way, also with an
1275
+ external command. For example, fcitx provide fcitx-remote command: >
1276
 
1277
  set iminsert=2
1278
  set imsearch=2
runtime/doc/message.txt CHANGED
@@ -126,7 +126,7 @@ path leading to the file.
126
  Cannot switch buffer. 'winfixbuf' is enabled ~
127
 
128
  If a window has 'winfixbuf' enabled, you cannot change that window's current
129
- buffer. You need to set 'nowinfixbuf' before continuing. You may use [!] to
130
  force the window to switch buffers, if your command supports it.
131
 
132
  *E72*
 
126
  Cannot switch buffer. 'winfixbuf' is enabled ~
127
 
128
  If a window has 'winfixbuf' enabled, you cannot change that window's current
129
+ buffer. You need to set 'nowinfixbuf' before continuing. You may use [!] to
130
  force the window to switch buffers, if your command supports it.
131
 
132
  *E72*
runtime/doc/mlang.txt CHANGED
@@ -1,4 +1,4 @@
1
- *mlang.txt* For Vim version 9.1. Last change: 2024 Jul 11
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
@@ -81,7 +81,7 @@ use of "-" and "_".
81
  This sets $LC_TIME.
82
  With the "collate" argument the language used for the
83
  collation order is set. This affects sorting of
84
- characters. This sets $LC_COLLATE.
85
  Without an argument all are set, and additionally
86
  $LANG is set.
87
  If available the LC_NUMERIC value will always be set
 
1
+ *mlang.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
 
81
  This sets $LC_TIME.
82
  With the "collate" argument the language used for the
83
  collation order is set. This affects sorting of
84
+ characters. This sets $LC_COLLATE.
85
  Without an argument all are set, and additionally
86
  $LANG is set.
87
  If available the LC_NUMERIC value will always be set
runtime/doc/motion.txt CHANGED
@@ -1,4 +1,4 @@
1
- *motion.txt* For Vim version 9.1. Last change: 2025 Aug 06
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
@@ -66,7 +66,7 @@ the two counts are multiplied. For example: "2d3w" deletes six words.
66
  *operator-doubled*
67
  When doubling the operator it operates on a line. When using a count, before
68
  or after the first character, that many lines are operated upon. Thus `3dd`
69
- deletes three lines. A count before and after the first character is
70
  multiplied, thus `2y3y` yanks six lines.
71
  *operator-resulting-pos*
72
  After applying the operator the cursor is mostly left at the start of the text
@@ -300,11 +300,11 @@ T{char} Till after [count]'th occurrence of {char} to the
300
  {char} can be entered like with the |f| command.
301
 
302
  *;*
303
- ; Repeat latest f, t, F or T [count] times. See |cpo-;|
304
 
305
  *,*
306
  , Repeat latest f, t, F or T in opposite direction
307
- [count] times. See also |cpo-;|
308
 
309
  ==============================================================================
310
  3. Up-down motions *up-down-motions*
@@ -625,11 +625,11 @@ ab "a block", select [count] blocks, from "[count] [(" to
625
 
626
  i) *v_i)* *i)* *i(*
627
  i( *vib* *v_ib* *v_i(* *ib*
628
- ib "inner block", select [count] blocks, from "[count] [("
629
- to the matching ')', excluding the '(' and ')' (see
630
- |[(|). If the cursor is not inside a () block, then
631
- find the next "(". It's an error to select an empty
632
- inner block like "()". The |cpo-M| option flag
633
  is used to handle escaped parenthesis.
634
  When used in Visual mode it is made characterwise.
635
 
@@ -673,11 +673,11 @@ aB "a Block", select [count] Blocks, from "[count] [{" to
673
 
674
  i} *v_i}* *i}* *i{*
675
  i{ *v_iB* *v_i{* *iB*
676
- iB "inner Block", select [count] Blocks, from "[count] [{"
677
- to the matching '}', excluding the '{' and '}' (see
678
- |[{|). It's an error to select an empty inner block
679
- like "{}". The |cpo-M| option flag is used to handle
680
- escaped braces.
681
  When used in Visual mode it is made characterwise.
682
 
683
  a" *v_aquote* *aquote*
@@ -876,9 +876,9 @@ buffer list. If you remove the file from the buffer list, all its marks are
876
  lost. If you delete a line that contains a mark, that mark is erased.
877
 
878
  Lowercase marks can be used in combination with operators. For example: "d't"
879
- deletes the lines from the cursor position to mark 't'. Hint: Use mark 't' for
880
- Top, 'b' for Bottom, etc.. Lowercase marks are restored when using undo and
881
- redo.
882
 
883
  Uppercase marks 'A to 'Z include the file name. You can use them to jump from
884
  file to file. You can only use an uppercase mark with an operator if the mark
@@ -1159,9 +1159,9 @@ stored in the viminfo file and restored when starting Vim.
1159
  *jumplist-stack*
1160
  When 'jumpoptions' option includes "stack", the jumplist behaves like the tag
1161
  stack. When jumping to a new location from the middle of the jumplist, the
1162
- locations after the current position will be discarded. With this option set
1163
- you can move through a tree of jump locations. When going back up a branch and
1164
- then down another branch, CTRL-O still takes you further up the tree.
1165
 
1166
  Given a jumplist like the following in which CTRL-O has been used to move back
1167
  three times to location X: >
@@ -1263,7 +1263,7 @@ remembered.
1263
 
1264
  *%*
1265
  % Find the next item in this line after or under the
1266
- cursor and jump to its match. |inclusive| motion.
1267
  Items can be:
1268
  ([{}]) parenthesis or (curly/square) brackets
1269
  (this can be changed with the
@@ -1334,13 +1334,13 @@ bring you back to the switch statement.
1334
  similar structured language). When not after the
1335
  start of a method, jump to the start or end of the
1336
  class. When no '{' is found before the cursor this is
1337
- an error. |exclusive| motion.
1338
  *[M*
1339
  [M Go to [count] previous end of a method (for Java or
1340
  similar structured language). When not after the
1341
  end of a method, jump to the start or end of the
1342
  class. When no '}' is found before the cursor this is
1343
- an error. |exclusive| motion.
1344
 
1345
  The above four commands assume that the file contains a class with methods.
1346
  The class definition is surrounded in '{' and '}'. Each method in the class
@@ -1375,7 +1375,8 @@ Using "3[m" will jump to the start of the class.
1375
 
1376
  These two commands work in C programs that contain #if/#else/#endif
1377
  constructs. It brings you to the start or end of the #if/#else/#endif where
1378
- the current line is included. You can then use "%" to go to the matching line.
 
1379
 
1380
  *[star* *[/*
1381
  [* or [/ Go to [count] previous start of a C comment "/*".
 
1
+ *motion.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
 
66
  *operator-doubled*
67
  When doubling the operator it operates on a line. When using a count, before
68
  or after the first character, that many lines are operated upon. Thus `3dd`
69
+ deletes three lines. A count before and after the first character is
70
  multiplied, thus `2y3y` yanks six lines.
71
  *operator-resulting-pos*
72
  After applying the operator the cursor is mostly left at the start of the text
 
300
  {char} can be entered like with the |f| command.
301
 
302
  *;*
303
+ ; Repeat latest f, t, F or T [count] times. See |cpo-;|
304
 
305
  *,*
306
  , Repeat latest f, t, F or T in opposite direction
307
+ [count] times. See also |cpo-;|
308
 
309
  ==============================================================================
310
  3. Up-down motions *up-down-motions*
 
625
 
626
  i) *v_i)* *i)* *i(*
627
  i( *vib* *v_ib* *v_i(* *ib*
628
+ ib "inner block", select [count] blocks, from "[count]
629
+ [(" to the matching ')', excluding the '(' and ')'
630
+ (see |[(|). If the cursor is not inside a () block,
631
+ then find the next "(". It's an error to select an
632
+ empty inner block like "()". The |cpo-M| option flag
633
  is used to handle escaped parenthesis.
634
  When used in Visual mode it is made characterwise.
635
 
 
673
 
674
  i} *v_i}* *i}* *i{*
675
  i{ *v_iB* *v_i{* *iB*
676
+ iB "inner Block", select [count] Blocks, from "[count]
677
+ [{" to the matching '}', excluding the '{' and '}'
678
+ (see |[{|). It's an error to select an empty inner
679
+ block like "{}". The |cpo-M| option flag is used to
680
+ handle escaped braces.
681
  When used in Visual mode it is made characterwise.
682
 
683
  a" *v_aquote* *aquote*
 
876
  lost. If you delete a line that contains a mark, that mark is erased.
877
 
878
  Lowercase marks can be used in combination with operators. For example: "d't"
879
+ deletes the lines from the cursor position to mark 't'. Hint: Use mark 't'
880
+ for Top, 'b' for Bottom, etc.. Lowercase marks are restored when using undo
881
+ and redo.
882
 
883
  Uppercase marks 'A to 'Z include the file name. You can use them to jump from
884
  file to file. You can only use an uppercase mark with an operator if the mark
 
1159
  *jumplist-stack*
1160
  When 'jumpoptions' option includes "stack", the jumplist behaves like the tag
1161
  stack. When jumping to a new location from the middle of the jumplist, the
1162
+ locations after the current position will be discarded. With this option set
1163
+ you can move through a tree of jump locations. When going back up a branch
1164
+ and then down another branch, CTRL-O still takes you further up the tree.
1165
 
1166
  Given a jumplist like the following in which CTRL-O has been used to move back
1167
  three times to location X: >
 
1263
 
1264
  *%*
1265
  % Find the next item in this line after or under the
1266
+ cursor and jump to its match. |inclusive| motion.
1267
  Items can be:
1268
  ([{}]) parenthesis or (curly/square) brackets
1269
  (this can be changed with the
 
1334
  similar structured language). When not after the
1335
  start of a method, jump to the start or end of the
1336
  class. When no '{' is found before the cursor this is
1337
+ an error. |exclusive| motion.
1338
  *[M*
1339
  [M Go to [count] previous end of a method (for Java or
1340
  similar structured language). When not after the
1341
  end of a method, jump to the start or end of the
1342
  class. When no '}' is found before the cursor this is
1343
+ an error. |exclusive| motion.
1344
 
1345
  The above four commands assume that the file contains a class with methods.
1346
  The class definition is surrounded in '{' and '}'. Each method in the class
 
1375
 
1376
  These two commands work in C programs that contain #if/#else/#endif
1377
  constructs. It brings you to the start or end of the #if/#else/#endif where
1378
+ the current line is included. You can then use "%" to go to the matching
1379
+ line.
1380
 
1381
  *[star* *[/*
1382
  [* or [/ Go to [count] previous start of a C comment "/*".
runtime/doc/netbeans.txt CHANGED
@@ -35,10 +35,10 @@ longer exists for recent versions of NetBeans but the protocol was developed
35
  in such a way that any IDE can use it to integrate Vim.
36
 
37
  The NetBeans protocol of Vim is a text based communication protocol, over a
38
- classical TCP socket. There is no dependency on Java or NetBeans. Any language
39
- or environment providing a socket interface can control Vim using this
40
- protocol. There are existing implementations in C, C++, Python and Java. The
41
- name NetBeans is kept today for historical reasons.
42
 
43
  Active project using the NetBeans protocol of Vim:
44
  - Eclim, (dead link) eclim.org/
@@ -252,7 +252,7 @@ environment variable "__NETBEANS_SOCKET" is used or the default 3219.
252
  environment variable "__NETBEANS_VIM_PASSWORD" is used or "changeme".
253
 
254
  Vim will initiate a socket connection (client side) to the specified host and
255
- port upon startup. The password will be sent with the AUTH event when the
256
  connection has been established.
257
 
258
 
@@ -262,7 +262,7 @@ connection has been established.
262
  The communication between the Vim Controller and Vim uses plain text
263
  messages. This protocol was first designed to work with the external editor
264
  module of NetBeans. Later it was extended to work with Agide (A-A-P GUI IDE,
265
- see http://www.a-a-p.org) and then with other IDE. The extensions are marked
266
  with "version 2.1".
267
 
268
  Version 2.2 of the protocol has several minor changes which should only affect
@@ -285,7 +285,7 @@ mechanism.
285
  Netbeans messages are processed when Vim is idle, waiting for user input.
286
  When Vim is run in non-interactive mode, for example when running an automated
287
  test case that sources a Vim script, the idle loop may not be called often
288
- enough. In that case, insert |:sleep| commands in the Vim script. The |:sleep|
289
  command does invoke Netbeans messages processing.
290
 
291
  6.1 Kinds of messages |nb-messages|
@@ -442,7 +442,7 @@ editFile pathname
442
  Normal way for the IDE to tell the editor to edit a file.
443
 
444
  You must set a bufId different of 0 with this command to
445
- assign a bufId to the buffer. It will trigger an event
446
  fileOpened with a bufId of 0 but the buffer has been assigned.
447
 
448
  If the IDE is going to pass the file text to the editor use
@@ -470,8 +470,8 @@ initDone Mark the buffer as ready for use. Implicitly makes the buffer
470
  insertDone starteol readonly
471
  Sent by Vim Controller to tell Vim an initial file insert is
472
  done. This triggers a read message being printed. If
473
- "starteol" is "F" then the last line doesn't have a EOL. If
474
- "readonly" is "T" then the file is marked as readonly. Prior
475
  to version 2.3, no read messages were displayed after opening
476
  a file. New in version 2.3.
477
 
@@ -862,7 +862,7 @@ These errors occur when a message violates the protocol:
862
  ':echo has("netbeans_enabled")'
863
 
864
  *:nbclose*
865
- :nbc[lose] Close the current NetBeans session. Remove all placed
866
  signs.
867
 
868
  *:nbkey*
@@ -871,7 +871,7 @@ These errors occur when a message violates the protocol:
871
  command, this command can be used to generate a hotkey
872
  message to the Vim Controller.
873
  This command can also be used to pass any text to the
874
- Vim Controller. It is used by Pyclewn, for example,
875
  to build the complete set of gdb commands as Vim user
876
  commands.
877
  The events newDotAndMark, keyCommand and keyAtPos are
@@ -885,7 +885,7 @@ NUL bytes are not possible. For editor -> IDE they will appear as NL
885
  characters. For IDE -> editor they cannot be inserted.
886
 
887
  A NetBeans session may be initiated with Vim running in a terminal, and
888
- continued later in a GUI environment after running the |:gui| command. In this
889
  case, the highlighting defined for the NetBeans annotations may be cleared
890
  when the ":gui" command sources .gvimrc and this file loads a colorscheme
891
  that runs the command ":highlight clear".
@@ -935,14 +935,14 @@ version of NetBeans.
935
 
936
  10.1. Downloading NetBeans *netbeans-download*
937
 
938
- The NetBeans IDE is available for download from netbeans.org. You can download
939
- a released version, download sources, or use CVS to download the current
940
- source tree. If you choose to download sources, follow directions from
941
- netbeans.org on building NetBeans.
942
 
943
  Depending on the version of NetBeans you download, you may need to do further
944
- work to get the required External Editor module. This is the module which lets
945
- NetBeans work with gvim (or xemacs :-). See (dead link)
946
  externaleditor.netbeans.org
947
  for details on downloading this module if your NetBeans release does not have
948
  it.
 
35
  in such a way that any IDE can use it to integrate Vim.
36
 
37
  The NetBeans protocol of Vim is a text based communication protocol, over a
38
+ classical TCP socket. There is no dependency on Java or NetBeans. Any
39
+ language or environment providing a socket interface can control Vim using
40
+ this protocol. There are existing implementations in C, C++, Python and Java.
41
+ The name NetBeans is kept today for historical reasons.
42
 
43
  Active project using the NetBeans protocol of Vim:
44
  - Eclim, (dead link) eclim.org/
 
252
  environment variable "__NETBEANS_VIM_PASSWORD" is used or "changeme".
253
 
254
  Vim will initiate a socket connection (client side) to the specified host and
255
+ port upon startup. The password will be sent with the AUTH event when the
256
  connection has been established.
257
 
258
 
 
262
  The communication between the Vim Controller and Vim uses plain text
263
  messages. This protocol was first designed to work with the external editor
264
  module of NetBeans. Later it was extended to work with Agide (A-A-P GUI IDE,
265
+ see http://www.a-a-p.org) and then with other IDE. The extensions are marked
266
  with "version 2.1".
267
 
268
  Version 2.2 of the protocol has several minor changes which should only affect
 
285
  Netbeans messages are processed when Vim is idle, waiting for user input.
286
  When Vim is run in non-interactive mode, for example when running an automated
287
  test case that sources a Vim script, the idle loop may not be called often
288
+ enough. In that case, insert |:sleep| commands in the Vim script. The |:sleep|
289
  command does invoke Netbeans messages processing.
290
 
291
  6.1 Kinds of messages |nb-messages|
 
442
  Normal way for the IDE to tell the editor to edit a file.
443
 
444
  You must set a bufId different of 0 with this command to
445
+ assign a bufId to the buffer. It will trigger an event
446
  fileOpened with a bufId of 0 but the buffer has been assigned.
447
 
448
  If the IDE is going to pass the file text to the editor use
 
470
  insertDone starteol readonly
471
  Sent by Vim Controller to tell Vim an initial file insert is
472
  done. This triggers a read message being printed. If
473
+ "starteol" is "F" then the last line doesn't have a EOL. If
474
+ "readonly" is "T" then the file is marked as readonly. Prior
475
  to version 2.3, no read messages were displayed after opening
476
  a file. New in version 2.3.
477
 
 
862
  ':echo has("netbeans_enabled")'
863
 
864
  *:nbclose*
865
+ :nbc[lose] Close the current NetBeans session. Remove all placed
866
  signs.
867
 
868
  *:nbkey*
 
871
  command, this command can be used to generate a hotkey
872
  message to the Vim Controller.
873
  This command can also be used to pass any text to the
874
+ Vim Controller. It is used by Pyclewn, for example,
875
  to build the complete set of gdb commands as Vim user
876
  commands.
877
  The events newDotAndMark, keyCommand and keyAtPos are
 
885
  characters. For IDE -> editor they cannot be inserted.
886
 
887
  A NetBeans session may be initiated with Vim running in a terminal, and
888
+ continued later in a GUI environment after running the |:gui| command. In this
889
  case, the highlighting defined for the NetBeans annotations may be cleared
890
  when the ":gui" command sources .gvimrc and this file loads a colorscheme
891
  that runs the command ":highlight clear".
 
935
 
936
  10.1. Downloading NetBeans *netbeans-download*
937
 
938
+ The NetBeans IDE is available for download from netbeans.org. You can
939
+ download a released version, download sources, or use CVS to download the
940
+ current source tree. If you choose to download sources, follow directions
941
+ from netbeans.org on building NetBeans.
942
 
943
  Depending on the version of NetBeans you download, you may need to do further
944
+ work to get the required External Editor module. This is the module which
945
+ lets NetBeans work with gvim (or xemacs :-). See (dead link)
946
  externaleditor.netbeans.org
947
  for details on downloading this module if your NetBeans release does not have
948
  it.
runtime/doc/options.txt CHANGED
@@ -1,4 +1,4 @@
1
- *options.txt* For Vim version 9.1. Last change: 2025 Oct 07
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
@@ -32,8 +32,8 @@ achieve special effects. These options come in three forms:
32
 
33
  :se[t] termcap Show all terminal options. Note that in the GUI the
34
  key codes are not shown, because they are generated
35
- internally and can't be changed. Changing the terminal
36
- codes in the GUI is not useful either...
37
  The options have the form t_AB, see
38
  |terminal-options|.
39
 
@@ -1493,8 +1493,8 @@ A jump table for the options with a short description can be found at |Q_op|.
1493
  {not available when compiled without the |+linebreak|
1494
  feature}
1495
  Every wrapped line will continue visually indented (same amount of
1496
- space as the beginning of that line), thus preserving horizontal blocks
1497
- of text.
1498
  NOTE: This option is reset when 'compatible' is set.
1499
 
1500
  *'breakindentopt'* *'briopt'*
@@ -1839,13 +1839,14 @@ A jump table for the options with a short description can be found at |Q_op|.
1839
  register '*' for all yank, delete, change and put
1840
  operations which would normally go to the unnamed
1841
  register. When "unnamed" is also included to the
1842
- option, yank operations (but not delete, change or put)
1843
- will additionally copy the text into register '*'. If
1844
- Wayland is being used and the compositor does not
1845
- support the primary-selection-unstable-v1 protocol,
1846
- then the regular selection is used in its place. Only
1847
- available with the |+X11| or |+wayland_clipboard|
1848
- feature. Availability can be checked with: >
 
1849
  if has('unnamedplus')
1850
  <
1851
  *clipboard-autoselect*
@@ -2147,12 +2148,12 @@ A jump table for the options with a short description can be found at |Q_op|.
2147
  |i_CTRL-X_CTRL-D|
2148
  ] tag completion
2149
  t same as "]"
2150
- F{func} call the function {func}. Multiple "F" flags may be specified.
2151
- Refer to |complete-functions| for details on how the function
2152
- is invoked and what it should return. The value can be the
2153
- name of a function or a |Funcref|. For |Funcref| values,
2154
- spaces must be escaped with a backslash ('\'), and commas with
2155
- double backslashes ('\\') (see |option-backslash|).
2156
  Unlike other sources, functions can provide completions
2157
  starting from a non-keyword character before the cursor, and
2158
  their start position for replacing text may differ from other
@@ -2354,7 +2355,8 @@ A jump table for the options with a short description can be found at |Q_op|.
2354
  completion in insert mode. This is useful when editing HTML tag, or
2355
  Makefile with 'noshellslash' on MS-Windows.
2356
  - When this option is set to "backslash", backslash is used. This is
2357
- useful when editing a batch file with 'shellslash' set on MS-Windows.
 
2358
  - When this option is empty, same character is used as for
2359
  'shellslash'.
2360
  For Insert mode completion the buffer-local value is used. For
@@ -5575,8 +5577,8 @@ A jump table for the options with a short description can be found at |Q_op|.
5575
  global
5576
  {only available when compiled with the |+langmap|
5577
  feature}
5578
- When off, setting 'langmap' does not apply to characters resulting from
5579
- a mapping. This basically means, if you noticed that setting
5580
  'langmap' disables some of your mappings, try resetting this option.
5581
  This option defaults to on for backwards compatibility. Set it off if
5582
  that works for you to avoid mappings to break.
@@ -5599,8 +5601,8 @@ A jump table for the options with a short description can be found at |Q_op|.
5599
  executing macros, registers and other commands that have not been
5600
  typed. Also, updating the window title is postponed. To force an
5601
  update use |:redraw|.
5602
- This may occasionally cause display errors. It is only meant to be set
5603
- temporarily when performing an operation where redrawing may cause
5604
  flickering or cause a slowdown.
5605
 
5606
  *'lhistory'* *'lhi'*
@@ -6517,10 +6519,10 @@ A jump table for the options with a short description can be found at |Q_op|.
6517
  some text from one window and paste it in Vim. This will avoid
6518
  unexpected effects.
6519
  Setting this option is useful when using Vim in a terminal, where Vim
6520
- cannot distinguish between typed text and pasted text. In the GUI, Vim
6521
- knows about pasting and will mostly do the right thing without 'paste'
6522
- being set. The same is true for a terminal where Vim handles the
6523
- mouse clicks itself.
6524
  This option is reset when starting the GUI. Thus if you set it in
6525
  your .vimrc it will work in a terminal, but not in the GUI. Setting
6526
  'paste' in the GUI has side effects: e.g., the Paste toolbar button
@@ -6566,8 +6568,8 @@ A jump table for the options with a short description can be found at |Q_op|.
6566
  'pastetoggle' works in Insert mode and Normal mode, but not in
6567
  Command-line mode.
6568
  Mappings are checked first, thus overrule 'pastetoggle'. However,
6569
- when 'paste' is on mappings are ignored in Insert mode, thus you can do
6570
- this: >
6571
  :map <F10> :set paste<CR>
6572
  :map <F11> :set nopaste<CR>
6573
  :imap <F10> <C-O>:set paste<CR>
 
1
+ *options.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
 
32
 
33
  :se[t] termcap Show all terminal options. Note that in the GUI the
34
  key codes are not shown, because they are generated
35
+ internally and can't be changed. Changing the
36
+ terminal codes in the GUI is not useful either...
37
  The options have the form t_AB, see
38
  |terminal-options|.
39
 
 
1493
  {not available when compiled without the |+linebreak|
1494
  feature}
1495
  Every wrapped line will continue visually indented (same amount of
1496
+ space as the beginning of that line), thus preserving horizontal
1497
+ blocks of text.
1498
  NOTE: This option is reset when 'compatible' is set.
1499
 
1500
  *'breakindentopt'* *'briopt'*
 
1839
  register '*' for all yank, delete, change and put
1840
  operations which would normally go to the unnamed
1841
  register. When "unnamed" is also included to the
1842
+ option, yank operations (but not delete, change or
1843
+ put) will additionally copy the text into register
1844
+ '*'. If Wayland is being used and the compositor does
1845
+ not support the primary-selection-unstable-v1
1846
+ protocol, then the regular selection is used in its
1847
+ place. Only available with the |+X11| or
1848
+ |+wayland_clipboard| feature. Availability can be
1849
+ checked with: >
1850
  if has('unnamedplus')
1851
  <
1852
  *clipboard-autoselect*
 
2148
  |i_CTRL-X_CTRL-D|
2149
  ] tag completion
2150
  t same as "]"
2151
+ F{func} call the function {func}. Multiple "F" flags may be
2152
+ specified. Refer to |complete-functions| for details on how
2153
+ the function is invoked and what it should return. The value
2154
+ can be the name of a function or a |Funcref|. For |Funcref|
2155
+ values, spaces must be escaped with a backslash ('\'), and
2156
+ commas with double backslashes ('\\') (see |option-backslash|).
2157
  Unlike other sources, functions can provide completions
2158
  starting from a non-keyword character before the cursor, and
2159
  their start position for replacing text may differ from other
 
2355
  completion in insert mode. This is useful when editing HTML tag, or
2356
  Makefile with 'noshellslash' on MS-Windows.
2357
  - When this option is set to "backslash", backslash is used. This is
2358
+ useful when editing a batch file with 'shellslash' set on
2359
+ MS-Windows.
2360
  - When this option is empty, same character is used as for
2361
  'shellslash'.
2362
  For Insert mode completion the buffer-local value is used. For
 
5577
  global
5578
  {only available when compiled with the |+langmap|
5579
  feature}
5580
+ When off, setting 'langmap' does not apply to characters resulting
5581
+ from a mapping. This basically means, if you noticed that setting
5582
  'langmap' disables some of your mappings, try resetting this option.
5583
  This option defaults to on for backwards compatibility. Set it off if
5584
  that works for you to avoid mappings to break.
 
5601
  executing macros, registers and other commands that have not been
5602
  typed. Also, updating the window title is postponed. To force an
5603
  update use |:redraw|.
5604
+ This may occasionally cause display errors. It is only meant to be
5605
+ set temporarily when performing an operation where redrawing may cause
5606
  flickering or cause a slowdown.
5607
 
5608
  *'lhistory'* *'lhi'*
 
6519
  some text from one window and paste it in Vim. This will avoid
6520
  unexpected effects.
6521
  Setting this option is useful when using Vim in a terminal, where Vim
6522
+ cannot distinguish between typed text and pasted text. In the GUI,
6523
+ Vim knows about pasting and will mostly do the right thing without
6524
+ 'paste' being set. The same is true for a terminal where Vim handles
6525
+ the mouse clicks itself.
6526
  This option is reset when starting the GUI. Thus if you set it in
6527
  your .vimrc it will work in a terminal, but not in the GUI. Setting
6528
  'paste' in the GUI has side effects: e.g., the Paste toolbar button
 
6568
  'pastetoggle' works in Insert mode and Normal mode, but not in
6569
  Command-line mode.
6570
  Mappings are checked first, thus overrule 'pastetoggle'. However,
6571
+ when 'paste' is on mappings are ignored in Insert mode, thus you can
6572
+ do this: >
6573
  :map <F10> :set paste<CR>
6574
  :map <F11> :set nopaste<CR>
6575
  :imap <F10> <C-O>:set paste<CR>
runtime/doc/os_amiga.txt CHANGED
@@ -1,4 +1,4 @@
1
- *os_amiga.txt* For Vim version 9.1. Last change: 2025 Aug 10
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
@@ -74,8 +74,8 @@ example to get white text on a blue background: >
74
 
75
  When using multiple commands with a filter command, e.g. >
76
  :r! echo this; echo that
77
- Only the output of the last command is used. To fix this you have to group the
78
- commands. This depends on the shell you use (that is why it is not done
79
  automatically in Vim). Examples: >
80
  :r! (echo this; echo that)
81
  :r! {echo this; echo that}
 
1
+ *os_amiga.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
 
74
 
75
  When using multiple commands with a filter command, e.g. >
76
  :r! echo this; echo that
77
+ Only the output of the last command is used. To fix this you have to group
78
+ the commands. This depends on the shell you use (that is why it is not done
79
  automatically in Vim). Examples: >
80
  :r! (echo this; echo that)
81
  :r! {echo this; echo that}
runtime/doc/os_haiku.txt CHANGED
@@ -1,4 +1,4 @@
1
- *os_haiku.txt* For Vim version 9.1. Last change: 2025 Sep 08
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
@@ -40,7 +40,7 @@ instance (r,g,b)=(168,168,168)) with black letters also works nicely.
40
 
41
  2. Compiling Vim *haiku-compiling*
42
 
43
- Vim can be compiled using the standard configure/make approach. Running
44
  ./configure without any arguments or passing --enable-gui=haiku, will compile
45
  vim with the Haiku GUI support. Run ./configure --help , to find out other
46
  features you can enable/disable.
@@ -73,8 +73,8 @@ additionally installed over the GUI version. Typical build commands are:
73
 
74
  Normally Vim starts with the GUI if you start it as gvim or vim -g. The vim
75
  version with GUI tries to determine if it was started from the Tracker instead
76
- of the Terminal, and if so, uses the GUI anyway. However, the current detection
77
- scheme is fooled if you use the command "vim - </dev/null".
78
 
79
  Toggling between normal managed window and fullscreen mode can be done by
80
  pressing <Alt-Enter>.
@@ -90,7 +90,7 @@ Stuff that does not work yet:
90
  follows-mouse turned on).
91
  - The cursor does not flash.
92
  - Switching windows using <C-Tab-Up> and <C-Tab-Down> in Twitcher does not
93
- work. This is due to each gvim window being managed by a separate instance
94
  completely unaware of other vim processes.
95
 
96
  4. The $VIM directory *haiku-vimdir*
@@ -141,7 +141,7 @@ open the files instead. This works from the Tracker but also from the command
141
  line. In the latter case, non-file (option) arguments are not supported.
142
  Another drawback of the Single Launch is silent ignore of "Open With ..."
143
  requests by vim instance that running as non-GUI application even GUI support
144
- was compiled in. Vim instance running with GUI has no such problems.
145
 
146
  NB: Only the GUI version has a BApplication (and hence Application Flags).
147
  This section does not apply to the GUI-less version, should you compile one.
@@ -201,14 +201,14 @@ $VIM/macros/swapmous.vim for an example. |gui-mouse-mapping|
201
 
202
  11. Color names *haiku-colors*
203
 
204
- Vim has a number of color names built-in. Additional names can be defined in
205
- |v:colornames|. See |:colorscheme| for details.
206
 
207
 
208
  12. GUI Toolbar Images *haiku-toolbar-images*
209
 
210
  Alternative set of toolbar images should be the PNG image of any height you
211
- like. Image width is calculated to contain at least 32 buttons in one-row
212
  cells.
213
  The image should be stored under the name $VIRUNTIME/bitmaps/builtin-tools.png
214
  More info about the buttons assignment are at |builtin-tools|.
@@ -229,8 +229,8 @@ Thank you, all!
229
 
230
  14. Bugs & to-do *haiku-bugs*
231
 
232
- The port is under development now and far away from the perfect state. For bug
233
- reports, patches and wishes, please use the Vim mailing list or Vim Github
234
  repository.
235
 
236
  Mailing list: https://www.vim.org/maillist.php
 
1
+ *os_haiku.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
 
40
 
41
  2. Compiling Vim *haiku-compiling*
42
 
43
+ Vim can be compiled using the standard configure/make approach. Running
44
  ./configure without any arguments or passing --enable-gui=haiku, will compile
45
  vim with the Haiku GUI support. Run ./configure --help , to find out other
46
  features you can enable/disable.
 
73
 
74
  Normally Vim starts with the GUI if you start it as gvim or vim -g. The vim
75
  version with GUI tries to determine if it was started from the Tracker instead
76
+ of the Terminal, and if so, uses the GUI anyway. However, the current
77
+ detection scheme is fooled if you use the command "vim - </dev/null".
78
 
79
  Toggling between normal managed window and fullscreen mode can be done by
80
  pressing <Alt-Enter>.
 
90
  follows-mouse turned on).
91
  - The cursor does not flash.
92
  - Switching windows using <C-Tab-Up> and <C-Tab-Down> in Twitcher does not
93
+ work. This is due to each gvim window being managed by a separate instance
94
  completely unaware of other vim processes.
95
 
96
  4. The $VIM directory *haiku-vimdir*
 
141
  line. In the latter case, non-file (option) arguments are not supported.
142
  Another drawback of the Single Launch is silent ignore of "Open With ..."
143
  requests by vim instance that running as non-GUI application even GUI support
144
+ was compiled in. Vim instance running with GUI has no such problems.
145
 
146
  NB: Only the GUI version has a BApplication (and hence Application Flags).
147
  This section does not apply to the GUI-less version, should you compile one.
 
201
 
202
  11. Color names *haiku-colors*
203
 
204
+ Vim has a number of color names built-in. Additional names can be defined in
205
+ |v:colornames|. See |:colorscheme| for details.
206
 
207
 
208
  12. GUI Toolbar Images *haiku-toolbar-images*
209
 
210
  Alternative set of toolbar images should be the PNG image of any height you
211
+ like. Image width is calculated to contain at least 32 buttons in one-row
212
  cells.
213
  The image should be stored under the name $VIRUNTIME/bitmaps/builtin-tools.png
214
  More info about the buttons assignment are at |builtin-tools|.
 
229
 
230
  14. Bugs & to-do *haiku-bugs*
231
 
232
+ The port is under development now and far away from the perfect state. For
233
+ bug reports, patches and wishes, please use the Vim mailing list or Vim Github
234
  repository.
235
 
236
  Mailing list: https://www.vim.org/maillist.php
runtime/doc/os_mac.txt CHANGED
@@ -1,4 +1,4 @@
1
- *os_mac.txt* For Vim version 9.1. Last change: 2025 Aug 10
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar et al.
@@ -36,7 +36,7 @@ Indianapolis IN 46220 USA
36
  1. Filename Convention *mac-filename*
37
 
38
  Starting with Vim version 7 you can just use the unix path separators with
39
- Vim. In order to determine if the specified filename is relative to the
40
  current folder or absolute (i.e. relative to the "Desktop"), the following
41
  algorithm is used:
42
 
 
1
+ *os_mac.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar et al.
 
36
  1. Filename Convention *mac-filename*
37
 
38
  Starting with Vim version 7 you can just use the unix path separators with
39
+ Vim. In order to determine if the specified filename is relative to the
40
  current folder or absolute (i.e. relative to the "Desktop"), the following
41
  algorithm is used:
42
 
runtime/doc/os_mint.txt CHANGED
@@ -1,11 +1,11 @@
1
- *os_mint.txt* For Vim version 9.1. Last change: 2020 Jul 14
2
 
3
 
4
  VIM REFERENCE MANUAL by Jens M. Felderhoff
5
 
6
 
7
  *MiNT* *Atari*
8
- The Atari MiNT support was removed with patch 8.2.1215. It probably didn't
9
  work at that time, since the code was old and not maintained.
10
 
11
 
 
1
+ *os_mint.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Jens M. Felderhoff
5
 
6
 
7
  *MiNT* *Atari*
8
+ The Atari MiNT support was removed with patch 8.2.1215. It probably didn't
9
  work at that time, since the code was old and not maintained.
10
 
11
 
runtime/doc/os_qnx.txt CHANGED
@@ -1,4 +1,4 @@
1
- *os_qnx.txt* For Vim version 9.1. Last change: 2025 Aug 06
2
 
3
 
4
  VIM REFERENCE MANUAL by Julian Kinraid
@@ -22,8 +22,8 @@ Vim on QNX behaves much like other unix versions. |os_unix.txt|
22
 
23
  2. Compiling Vim *qnx-compiling*
24
 
25
- Vim can be compiled using the standard configure/make approach. If you want to
26
- compile for X11, pass the --with-x option to configure. Otherwise, running
27
  ./configure without any arguments or passing --enable-gui=photon, will compile
28
  vim with the Photon gui support. Run ./configure --help , to find out other
29
  features you can enable/disable.
 
1
+ *os_qnx.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Julian Kinraid
 
22
 
23
  2. Compiling Vim *qnx-compiling*
24
 
25
+ Vim can be compiled using the standard configure/make approach. If you want
26
+ to compile for X11, pass the --with-x option to configure. Otherwise, running
27
  ./configure without any arguments or passing --enable-gui=photon, will compile
28
  vim with the Photon gui support. Run ./configure --help , to find out other
29
  features you can enable/disable.
runtime/doc/os_vms.txt CHANGED
@@ -1,4 +1,4 @@
1
- *os_vms.txt* For Vim version 9.1. Last change: 2025 Aug 06
2
 
3
 
4
  VIM REFERENCE MANUAL
@@ -80,9 +80,9 @@ See the file [.SRC]INSTALLVMS.TXT.
80
  4. Problems *vms-problems*
81
 
82
  The code has been tested under Open VMS 6.2 - 9.2 on Alpha, VAX, IA64 and
83
- X86_64 platforms with the DEC C compiler. It should work without major problems.
84
- If your system does not have some include libraries you can tune in the
85
- OS_VMS_CONF.H file.
86
 
87
  If you decided to build Vim with +perl, +python, etc. options, first you need
88
  to download OpenVMS distributions of Perl and Python. Build and deploy the
@@ -96,7 +96,8 @@ VAX C compiler is not fully ANSI C compatible in pre-processor directives
96
  semantics, therefore you have to use a converter program that will do the lion
97
  part of the job. For detailed instructions read file INSTALLvms.txt
98
 
99
- To build XXD.EXE, you should change to the subdirectory and build it separately.
 
100
 
101
  CTAGS is not part of the Vim source distribution anymore, however the OpenVMS
102
  specific source might contain CTAGS source files as described above.
@@ -216,8 +217,8 @@ Example LOGIN.COM: >
216
  $ set term/inq/ins ! inquire the terminal capabilities
217
  $ set disp/create/node=192.168.10.202/trans=tcpip
218
 
219
- Note: This set-up should be enough, if you are working on a standalone server or
220
- clustered environment, but if you want to use Vim as an internode editor in
221
  DECNET environment, it will satisfy as well.
222
  You just have to define the "whole" path: >
223
 
@@ -291,8 +292,8 @@ can be downloaded from http://www.polarhome.com/vim/).
291
 
292
  $ set disp/create/node=<your IP address>/trans=<transport-name>
293
  <
294
- and start Vim as in point 1. You can find more help in VMS documentation or
295
- type: help set disp in VMS prompt.
296
  Examples: >
297
 
298
  $ set disp/create/node=192.168.5.159 ! default trans is DECnet
@@ -456,7 +457,8 @@ Try to force to inquire the terminal capabilities with: >
456
 
457
  $ set term/inquire
458
 
459
- If the inquire did not help, the solutions is to define the default terminal name: >
 
460
 
461
  $ ! unknown terminal name. Let us use vt320 or ansi instead.
462
  $ ! Note: it's case sensitive
@@ -487,9 +489,9 @@ special commands to execute executables: >
487
 
488
  OpenVMS users always have to be aware that the Vim command :! "just" drop them
489
  to DCL prompt. This feature is possible to use without any problem with all
490
- DCL commands, but if we want to execute some programs such as XXD, CTAGS, JTAGS,
491
- etc. we're running into trouble if we follow the Vim documentation (see: help
492
- xxd).
493
 
494
  Solution: Execute with the MC command and add the full path to the executable.
495
  Example: Instead of :%!xxd command use: >
@@ -707,7 +709,7 @@ console mode can avoid performance problems.
707
  In a cluster that contains nodes with different architectures like below:
708
 
709
  $show cluster
710
- View of Cluster from system ID 11655 node: TOR 18-AUG-2008 11:58:31
711
  +---------------------------------+
712
  | SYSTEMS | MEMBERS |
713
  +-----------------------+---------|
@@ -773,17 +775,20 @@ GNU_TOOLS.ZIP package downloadable from http://www.polarhome.com/vim/
773
 
774
  Version 9.0 (2023 Nov 27)
775
  - Vim is ported to the X86_64 architecture
776
- - IMPORTANT: because of the getline function name used in structs like in ex_cmds.h
777
- on X86_64 the CRTL_VER is kept under 80500000 level. The proper solution would be
778
- to rename the getline function to something else in the struct (and in all places
779
- it is used) - and avoiding to use POSIX functions in structs, but this change would
780
- impact on all other operating systems. (added to the VMS TODO list)
781
- Read more about at https://forum.vmssoftware.com/viewtopic.php?f=38&t=8914&p=20049
 
 
782
  - os_vms_conf.h includes have been reviewed for all architectures
783
  - added support for the MODIFIED_BY define
784
 
785
  Version 8.2 (2020 Feb 6)
786
- - make all changes needed for clean compile build of v8.2 on VMS on all platforms
 
787
  - fix the call mkdir bug (vicente_polo@yahoo.es)
788
  - test on VSI OpenVMS Alpha and Itanium platforms
789
  - added LUA support
@@ -797,21 +802,23 @@ Version 8.1 (2019 Jan 9)
797
 
798
  Version 8.0 (2016 Nov 21)
799
  - solve the 100% cpu usage issue while waiting for a keystroke
800
- - correct the VMS warnings and errors around handling the INFINITY (used in json.c)
 
801
  - minor VMS port related changes
802
  - correct the make_vms.mms file for 8.0
803
  - fix [.TESTDIR]make_vms.mms for 8.0
804
 
805
  Version 7.4 (2013 Aug 10)
806
- - Undo: VMS can not handle more than one dot in the filenames use "dir/name" -> "dir/_un_name"
 
807
  add _un_ at the beginning to keep the extension
808
  - correct swap file name wildcard handling
809
  - handle iconv usage correctly
810
  - do not optimize on vax - otherwise it hangs compiling crypto files
811
  - fileio.c fix the comment
812
  - correct RealWaitForChar
813
- - after 7.4-119 use different functions lib$cvtf_to_internal_time because Alpha and VAX have
814
- G_FLOAT but IA64 uses IEEE float otherwise Vim crashes
815
  - guard against crashes that are caused by mixed filenames
816
  - [TESTDIR]make_vms.mms changed to see the output files
817
  - Improve tests, update known issues
@@ -820,7 +827,8 @@ Version 7.4 (2013 Aug 10)
820
 
821
  Version 7.3 (2010 Aug 15)
822
  - CTAGS 5.8 included
823
- - VMS compile warnings fixed - floating-point overflow warning corrected on VAX
 
824
  - filepath completion corrected - too many chars were escaped in filename
825
  and shell commands
826
  - the following plugins are included into VMS runtime:
 
1
+ *os_vms.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL
 
80
  4. Problems *vms-problems*
81
 
82
  The code has been tested under Open VMS 6.2 - 9.2 on Alpha, VAX, IA64 and
83
+ X86_64 platforms with the DEC C compiler. It should work without major
84
+ problems. If your system does not have some include libraries you can tune in
85
+ the OS_VMS_CONF.H file.
86
 
87
  If you decided to build Vim with +perl, +python, etc. options, first you need
88
  to download OpenVMS distributions of Perl and Python. Build and deploy the
 
96
  semantics, therefore you have to use a converter program that will do the lion
97
  part of the job. For detailed instructions read file INSTALLvms.txt
98
 
99
+ To build XXD.EXE, you should change to the subdirectory and build it
100
+ separately.
101
 
102
  CTAGS is not part of the Vim source distribution anymore, however the OpenVMS
103
  specific source might contain CTAGS source files as described above.
 
217
  $ set term/inq/ins ! inquire the terminal capabilities
218
  $ set disp/create/node=192.168.10.202/trans=tcpip
219
 
220
+ Note: This set-up should be enough, if you are working on a standalone server
221
+ or clustered environment, but if you want to use Vim as an internode editor in
222
  DECNET environment, it will satisfy as well.
223
  You just have to define the "whole" path: >
224
 
 
292
 
293
  $ set disp/create/node=<your IP address>/trans=<transport-name>
294
  <
295
+ and start Vim as in point 1. You can find more help in VMS documentation
296
+ or type: help set disp in VMS prompt.
297
  Examples: >
298
 
299
  $ set disp/create/node=192.168.5.159 ! default trans is DECnet
 
457
 
458
  $ set term/inquire
459
 
460
+ If the inquire did not help, the solutions is to define the default terminal
461
+ name: >
462
 
463
  $ ! unknown terminal name. Let us use vt320 or ansi instead.
464
  $ ! Note: it's case sensitive
 
489
 
490
  OpenVMS users always have to be aware that the Vim command :! "just" drop them
491
  to DCL prompt. This feature is possible to use without any problem with all
492
+ DCL commands, but if we want to execute some programs such as XXD, CTAGS,
493
+ JTAGS, etc. we're running into trouble if we follow the Vim documentation
494
+ (see: help xxd).
495
 
496
  Solution: Execute with the MC command and add the full path to the executable.
497
  Example: Instead of :%!xxd command use: >
 
709
  In a cluster that contains nodes with different architectures like below:
710
 
711
  $show cluster
712
+ View of Cluster from system ID 11655 node: TOR 18-AUG-2008 11:58:31
713
  +---------------------------------+
714
  | SYSTEMS | MEMBERS |
715
  +-----------------------+---------|
 
775
 
776
  Version 9.0 (2023 Nov 27)
777
  - Vim is ported to the X86_64 architecture
778
+ - IMPORTANT: because of the getline function name used in structs like
779
+ in ex_cmds.h on X86_64 the CRTL_VER is kept under 80500000 level. The
780
+ proper solution would be to rename the getline function to something
781
+ else in the struct (and in all places it is used) - and avoiding to
782
+ use POSIX functions in structs, but this change would impact on all
783
+ other operating systems. (added to the VMS TODO list)
784
+ Read more about at:
785
+ https://forum.vmssoftware.com/viewtopic.php?f=38&t=8914&p=20049
786
  - os_vms_conf.h includes have been reviewed for all architectures
787
  - added support for the MODIFIED_BY define
788
 
789
  Version 8.2 (2020 Feb 6)
790
+ - make all changes needed for clean compile build of v8.2 on VMS on all
791
+ platforms
792
  - fix the call mkdir bug (vicente_polo@yahoo.es)
793
  - test on VSI OpenVMS Alpha and Itanium platforms
794
  - added LUA support
 
802
 
803
  Version 8.0 (2016 Nov 21)
804
  - solve the 100% cpu usage issue while waiting for a keystroke
805
+ - correct the VMS warnings and errors around handling the INFINITY (used in
806
+ json.c)
807
  - minor VMS port related changes
808
  - correct the make_vms.mms file for 8.0
809
  - fix [.TESTDIR]make_vms.mms for 8.0
810
 
811
  Version 7.4 (2013 Aug 10)
812
+ - Undo: VMS can not handle more than one dot in the filenames use
813
+ "dir/name" -> "dir/_un_name"
814
  add _un_ at the beginning to keep the extension
815
  - correct swap file name wildcard handling
816
  - handle iconv usage correctly
817
  - do not optimize on vax - otherwise it hangs compiling crypto files
818
  - fileio.c fix the comment
819
  - correct RealWaitForChar
820
+ - after 7.4-119 use different functions lib$cvtf_to_internal_time because
821
+ Alpha and VAX have G_FLOAT but IA64 uses IEEE float otherwise Vim crashes
822
  - guard against crashes that are caused by mixed filenames
823
  - [TESTDIR]make_vms.mms changed to see the output files
824
  - Improve tests, update known issues
 
827
 
828
  Version 7.3 (2010 Aug 15)
829
  - CTAGS 5.8 included
830
+ - VMS compile warnings fixed - floating-point overflow warning corrected on
831
+ VAX
832
  - filepath completion corrected - too many chars were escaped in filename
833
  and shell commands
834
  - the following plugins are included into VMS runtime:
runtime/doc/os_win32.txt CHANGED
@@ -1,4 +1,4 @@
1
- *os_win32.txt* For Vim version 9.1. Last change: 2025 Oct 01
2
 
3
 
4
  VIM REFERENCE MANUAL by George Reilly
@@ -153,7 +153,7 @@ Alternatively use three quotes to get one: >
153
  The quotation rules are:
154
 
155
  1. A `"` starts quotation.
156
- 2. Another `"` or `""` ends quotation. If the quotation ends with `""`, a `"`
157
  is produced at the end of the quoted string.
158
 
159
  Examples, with [] around an argument:
@@ -295,7 +295,7 @@ A. You can't! This is a limitation of the NT console. NT 5.0 is reported to
295
  *:!start*
296
  Q. How can I asynchronously run an external command or program, or open a
297
  document or URL with its default program?
298
- A. When using :! to run an external command, you can run it with "start". For
299
  example, to run notepad: >
300
  :!start notepad
301
  < To open "image.jpg" with the default image viewer: >
@@ -320,14 +320,14 @@ A. When using :! to run an external command, you can run it with "start". For
320
  Q. How do I avoid getting a window for programs that I run asynchronously?
321
  A. You have three possible solutions depending on what you want:
322
  1) You may use the /min flag in order to run program in a minimized state
323
- with no other changes. It will work equally for console and GUI
324
  applications.
325
  2) You can use the /b flag to run console applications without creating a
326
- console window for them (GUI applications are not affected). But you
327
  should use this flag only if the application you run doesn't require any
328
  input. Otherwise it will get an EOF error because its input stream
329
  (stdin) would be redirected to \\.\NUL (stdout and stderr too).
330
- 3) Set the '!' flag in the 'guioptions' option |'go-!'|. This will make Vim
331
  run the "start" command inside Vims terminal window and not open a
332
  console window.
333
 
 
1
+ *os_win32.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by George Reilly
 
153
  The quotation rules are:
154
 
155
  1. A `"` starts quotation.
156
+ 2. Another `"` or `""` ends quotation. If the quotation ends with `""`, a `"`
157
  is produced at the end of the quoted string.
158
 
159
  Examples, with [] around an argument:
 
295
  *:!start*
296
  Q. How can I asynchronously run an external command or program, or open a
297
  document or URL with its default program?
298
+ A. When using :! to run an external command, you can run it with "start". For
299
  example, to run notepad: >
300
  :!start notepad
301
  < To open "image.jpg" with the default image viewer: >
 
320
  Q. How do I avoid getting a window for programs that I run asynchronously?
321
  A. You have three possible solutions depending on what you want:
322
  1) You may use the /min flag in order to run program in a minimized state
323
+ with no other changes. It will work equally for console and GUI
324
  applications.
325
  2) You can use the /b flag to run console applications without creating a
326
+ console window for them (GUI applications are not affected). But you
327
  should use this flag only if the application you run doesn't require any
328
  input. Otherwise it will get an EOF error because its input stream
329
  (stdin) would be redirected to \\.\NUL (stdout and stderr too).
330
+ 3) Set the '!' flag in the 'guioptions' option |'go-!'|. This will make Vim
331
  run the "start" command inside Vims terminal window and not open a
332
  console window.
333
 
runtime/doc/pattern.txt CHANGED
@@ -1,4 +1,4 @@
1
- *pattern.txt* For Vim version 9.1. Last change: 2025 Oct 09
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
@@ -288,9 +288,9 @@ When searching backwards, searching starts at the start of the line, using the
288
  cursor position is used.
289
 
290
  In Vi the ":tag" command sets the last search pattern when the tag is searched
291
- for. In Vim this is not done, the previous search pattern is still remembered,
292
- unless the 't' flag is present in 'cpoptions'. The search pattern is always
293
- put in the search history.
294
 
295
  If the 'wrapscan' option is on (which is the default), searches wrap around
296
  the end of the buffer. If 'wrapscan' is not set, the backward search stops
@@ -1151,11 +1151,12 @@ x A single character, with no special meaning, matches itself
1151
  in the collection: "[^xyz]" matches anything but 'x', 'y' and 'z'.
1152
  - If two characters in the sequence are separated by '-', this is
1153
  shorthand for the full list of ASCII characters between them. E.g.,
1154
- "[0-9]" matches any decimal digit. If the starting character exceeds
1155
- the ending character, e.g. [c-a], E944 occurs. Non-ASCII characters
1156
- can be used, but the character values must not be more than 256 apart
1157
- in the old regexp engine. For example, searching by [\u3000-\u4000]
1158
- after setting re=1 emits a E945 error. Prepending \%#=2 will fix it.
 
1159
  - A character class expression is evaluated to the set of characters
1160
  belonging to that character class. The following character classes
1161
  are supported:
 
1
+ *pattern.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
 
288
  cursor position is used.
289
 
290
  In Vi the ":tag" command sets the last search pattern when the tag is searched
291
+ for. In Vim this is not done, the previous search pattern is still
292
+ remembered, unless the 't' flag is present in 'cpoptions'. The search pattern
293
+ is always put in the search history.
294
 
295
  If the 'wrapscan' option is on (which is the default), searches wrap around
296
  the end of the buffer. If 'wrapscan' is not set, the backward search stops
 
1151
  in the collection: "[^xyz]" matches anything but 'x', 'y' and 'z'.
1152
  - If two characters in the sequence are separated by '-', this is
1153
  shorthand for the full list of ASCII characters between them. E.g.,
1154
+ "[0-9]" matches any decimal digit. If the starting character
1155
+ exceeds the ending character, e.g. [c-a], E944 occurs. Non-ASCII
1156
+ characters can be used, but the character values must not be more
1157
+ than 256 apart in the old regexp engine. For example, searching by
1158
+ [\u3000-\u4000] after setting re=1 emits a E945 error. Prepending
1159
+ \%#=2 will fix it.
1160
  - A character class expression is evaluated to the set of characters
1161
  belonging to that character class. The following character classes
1162
  are supported:
runtime/doc/popup.txt CHANGED
@@ -1,4 +1,4 @@
1
- *popup.txt* For Vim version 9.1. Last change: 2025 Sep 26
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
@@ -314,7 +314,7 @@ popup_dialog({what}, {options}) *popup_dialog()*
314
  \ padding: [],
315
  \ mapping: 0,
316
  \})
317
- < Use {options} to change the properties. E.g. add a 'filter'
318
  option with value 'popup_filter_yesno'. Example: >
319
  call popup_create('do you want to quit (Yes/no)?', #{
320
  \ filter: 'popup_filter_yesno',
@@ -331,7 +331,7 @@ popup_dialog({what}, {options}) *popup_dialog()*
331
 
332
 
333
  popup_filter_menu({id}, {key}) *popup_filter_menu()*
334
- Filter that can be used for a popup. These keys can be used:
335
  j <Down> <C-N> select item below
336
  k <Up> <C-P> select item above
337
  <Space> <Enter> accept current selection
@@ -354,7 +354,7 @@ popup_filter_menu({id}, {key}) *popup_filter_menu()*
354
 
355
 
356
  popup_filter_yesno({id}, {key}) *popup_filter_yesno()*
357
- Filter that can be used for a popup. It handles only the keys
358
  'y', 'Y' and 'n' or 'N'. Invokes the "callback" of the
359
  popup menu with the 1 for 'y' or 'Y' and zero for 'n' or 'N'
360
  as the second argument. Pressing Esc and 'x' works like
@@ -460,7 +460,7 @@ popup_getpos({id}) *popup_getpos()*
460
 
461
 
462
  popup_hide({id}) *popup_hide()*
463
- If {id} is a displayed popup, hide it now. If the popup has a
464
  filter it will not be invoked for so long as the popup is
465
  hidden.
466
  If window {id} does not exist nothing happens. If window {id}
@@ -491,8 +491,8 @@ popup_locate({row}, {col}) *popup_locate()*
491
  popup_menu({what}, {options}) *popup_menu()*
492
  Show the {what} near the cursor, handle selecting one of the
493
  items with cursorkeys, and close it an item is selected with
494
- Space or Enter. {what} should have multiple lines to make this
495
- useful. This works like: >
496
  call popup_create({what}, #{
497
  \ pos: 'center',
498
  \ zindex: 200,
@@ -627,7 +627,7 @@ popup_setoptions({id}, {options}) *popup_setoptions()*
627
 
628
 
629
  popup_settext({id}, {text}) *popup_settext()*
630
- Set the text of the buffer in popup win {id}. {text} is
631
  a string or a list of strings to be displayed in the popup.
632
  Does not change the window size or position, other than caused
633
  by the different text.
@@ -710,7 +710,7 @@ The second argument of |popup_create()| is a dictionary with options:
710
  omitted or invalid the current window is used. Used
711
  when "textprop" is present.
712
  textpropid Used to identify the text property when "textprop" is
713
- present. Use zero to reset.
714
  fixed When FALSE (the default), and:
715
  - "pos" is "botleft" or "topleft", and
716
  - the popup would be truncated at the right edge of
@@ -753,7 +753,7 @@ The second argument of |popup_create()| is a dictionary with options:
753
  wrap TRUE to make the lines wrap (default TRUE).
754
  drag TRUE to allow the popup to be dragged with the mouse
755
  by grabbing at the border. Has no effect if the
756
- popup does not have a border. As soon as dragging
757
  starts and "pos" is "center" it is changed to
758
  "topleft".
759
  dragall TRUE to allow the popup to be dragged from every
@@ -803,10 +803,10 @@ The second argument of |popup_create()| is a dictionary with options:
803
  scrollbar 1 or true: show a scrollbar when the text doesn't fit.
804
  zero: do not show a scrollbar. Default is non-zero.
805
  Also see |popup-scrollbar|.
806
- scrollbarhighlight Highlight group name for the scrollbar. The
807
  background color is what matters. When not given then
808
  PmenuSbar is used.
809
- thumbhighlight Highlight group name for the scrollbar thumb. The
810
  background color is what matters. When not given then
811
  PmenuThumb is used.
812
  zindex Priority for the popup, default 50. Minimum value is
@@ -831,7 +831,7 @@ The second argument of |popup_create()| is a dictionary with options:
831
  line or to another window.
832
  mousemoved Like "moved" but referring to the mouse pointer
833
  position
834
- cursorline TRUE: Highlight the cursor line. Also scrolls the
835
  text to show this line (only works properly
836
  when 'wrap' is off).
837
  zero: Do not highlight the cursor line.
 
1
+ *popup.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
 
314
  \ padding: [],
315
  \ mapping: 0,
316
  \})
317
+ < Use {options} to change the properties. E.g. add a 'filter'
318
  option with value 'popup_filter_yesno'. Example: >
319
  call popup_create('do you want to quit (Yes/no)?', #{
320
  \ filter: 'popup_filter_yesno',
 
331
 
332
 
333
  popup_filter_menu({id}, {key}) *popup_filter_menu()*
334
+ Filter that can be used for a popup. These keys can be used:
335
  j <Down> <C-N> select item below
336
  k <Up> <C-P> select item above
337
  <Space> <Enter> accept current selection
 
354
 
355
 
356
  popup_filter_yesno({id}, {key}) *popup_filter_yesno()*
357
+ Filter that can be used for a popup. It handles only the keys
358
  'y', 'Y' and 'n' or 'N'. Invokes the "callback" of the
359
  popup menu with the 1 for 'y' or 'Y' and zero for 'n' or 'N'
360
  as the second argument. Pressing Esc and 'x' works like
 
460
 
461
 
462
  popup_hide({id}) *popup_hide()*
463
+ If {id} is a displayed popup, hide it now. If the popup has a
464
  filter it will not be invoked for so long as the popup is
465
  hidden.
466
  If window {id} does not exist nothing happens. If window {id}
 
491
  popup_menu({what}, {options}) *popup_menu()*
492
  Show the {what} near the cursor, handle selecting one of the
493
  items with cursorkeys, and close it an item is selected with
494
+ Space or Enter. {what} should have multiple lines to make
495
+ this useful. This works like: >
496
  call popup_create({what}, #{
497
  \ pos: 'center',
498
  \ zindex: 200,
 
627
 
628
 
629
  popup_settext({id}, {text}) *popup_settext()*
630
+ Set the text of the buffer in popup win {id}. {text} is
631
  a string or a list of strings to be displayed in the popup.
632
  Does not change the window size or position, other than caused
633
  by the different text.
 
710
  omitted or invalid the current window is used. Used
711
  when "textprop" is present.
712
  textpropid Used to identify the text property when "textprop" is
713
+ present. Use zero to reset.
714
  fixed When FALSE (the default), and:
715
  - "pos" is "botleft" or "topleft", and
716
  - the popup would be truncated at the right edge of
 
753
  wrap TRUE to make the lines wrap (default TRUE).
754
  drag TRUE to allow the popup to be dragged with the mouse
755
  by grabbing at the border. Has no effect if the
756
+ popup does not have a border. As soon as dragging
757
  starts and "pos" is "center" it is changed to
758
  "topleft".
759
  dragall TRUE to allow the popup to be dragged from every
 
803
  scrollbar 1 or true: show a scrollbar when the text doesn't fit.
804
  zero: do not show a scrollbar. Default is non-zero.
805
  Also see |popup-scrollbar|.
806
+ scrollbarhighlight Highlight group name for the scrollbar. The
807
  background color is what matters. When not given then
808
  PmenuSbar is used.
809
+ thumbhighlight Highlight group name for the scrollbar thumb. The
810
  background color is what matters. When not given then
811
  PmenuThumb is used.
812
  zindex Priority for the popup, default 50. Minimum value is
 
831
  line or to another window.
832
  mousemoved Like "moved" but referring to the mouse pointer
833
  position
834
+ cursorline TRUE: Highlight the cursor line. Also scrolls the
835
  text to show this line (only works properly
836
  when 'wrap' is off).
837
  zero: Do not highlight the cursor line.
runtime/doc/print.txt CHANGED
@@ -1,4 +1,4 @@
1
- *print.txt* For Vim version 9.1. Last change: 2025 Aug 10
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
@@ -178,7 +178,7 @@ value for non-MS-Windows a trick is used: Adding "v:shell_error" will result
178
  in a non-zero number when the system() call fails.
179
 
180
  If the expression starts with s: or |<SID>|, then it is replaced with the
181
- script ID (|local-function|). Example: >
182
  set printexpr=s:MyPrintFile()
183
  set printexpr=<SID>SomePrintFile()
184
  Otherwise, the expression is evaluated in the context of the script where the
@@ -545,8 +545,9 @@ There are a number of possible causes as to why the printing may have failed:
545
  not support the requested paper size. By default Vim uses A4 paper. Find
546
  out what size paper your printer normally uses and set the appropriate paper
547
  size with 'printoptions'. If you cannot find the name of the paper used,
548
- measure a sheet and compare it with the table of supported paper sizes listed
549
- for 'printoptions', using the paper that is closest in both width AND height.
 
550
  Note: The dimensions of actual paper may vary slightly from the ones listed.
551
  If there is no paper listed close enough, then you may want to try psresize
552
  from PSUtils, discussed below.
 
1
+ *print.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
 
178
  in a non-zero number when the system() call fails.
179
 
180
  If the expression starts with s: or |<SID>|, then it is replaced with the
181
+ script ID (|local-function|). Example: >
182
  set printexpr=s:MyPrintFile()
183
  set printexpr=<SID>SomePrintFile()
184
  Otherwise, the expression is evaluated in the context of the script where the
 
545
  not support the requested paper size. By default Vim uses A4 paper. Find
546
  out what size paper your printer normally uses and set the appropriate paper
547
  size with 'printoptions'. If you cannot find the name of the paper used,
548
+ measure a sheet and compare it with the table of supported paper sizes
549
+ listed for 'printoptions', using the paper that is closest in both width AND
550
+ height.
551
  Note: The dimensions of actual paper may vary slightly from the ones listed.
552
  If there is no paper listed close enough, then you may want to try psresize
553
  from PSUtils, discussed below.
runtime/doc/quickfix.txt CHANGED
@@ -1,4 +1,4 @@
1
- *quickfix.txt* For Vim version 9.1. Last change: 2025 Oct 11
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
@@ -45,13 +45,13 @@ compiler (see |errorformat| below).
45
 
46
  *quickfix-stack* *quickfix-ID* *E1545*
47
  Each quickfix list has a unique identifier called the quickfix ID and this
48
- number will not change within a Vim session. The |getqflist()| function can be
49
- used to get the identifier assigned to a list. There is also a quickfix list
50
  number which may change whenever more than 'chistory' lists are added to a
51
  quickfix stack.
52
 
53
  *location-list* *E776*
54
- A location list is a window-local quickfix list. You get one after commands
55
  like `:lvimgrep`, `:lgrep`, `:lhelpgrep`, `:lmake`, etc., which create a
56
  location list instead of a quickfix list as the corresponding `:vimgrep`,
57
  `:grep`, `:helpgrep`, `:make` do.
@@ -67,7 +67,7 @@ the location list is destroyed.
67
  *quickfix-changedtick*
68
  Every quickfix and location list has a read-only changedtick variable that
69
  tracks the total number of changes made to the list. Every time the quickfix
70
- list is modified, this count is incremented. This can be used to perform an
71
  action only when the list has changed. The |getqflist()| and |getloclist()|
72
  functions can be used to query the current value of changedtick. You cannot
73
  change the changedtick variable.
@@ -87,9 +87,9 @@ processing a quickfix or location list command, it will be aborted.
87
  *:cc*
88
  :cc[!] [nr] Display error [nr]. If [nr] is omitted, the same
89
  :[nr]cc[!] error is displayed again. Without [!] this doesn't
90
- work when jumping to another buffer, the current buffer
91
- has been changed, there is the only window for the
92
- buffer and both 'hidden' and 'autowrite' are off.
93
  When jumping to another buffer with [!] any changes to
94
  the current buffer are lost, unless 'hidden' is set or
95
  there is another window for this buffer.
@@ -131,10 +131,10 @@ processing a quickfix or location list command, it will be aborted.
131
  used. If there are no errors, then an error message
132
  is displayed. Assumes that the entries in a quickfix
133
  list are sorted by their buffer number and line
134
- number. If there are multiple errors on the same line,
135
- then only the first entry is used. If [count] exceeds
136
- the number of entries above the current line, then the
137
- first error in the file is selected.
138
 
139
  *:lab* *:labove*
140
  :[count]lab[ove] Same as ":cabove", except the location list for the
@@ -276,7 +276,7 @@ processing a quickfix or location list command, it will be aborted.
276
 
277
  *:caddf* *:caddfile*
278
  :caddf[ile] [errorfile] Read the error file and add the errors from the
279
- errorfile to the current quickfix list. If a quickfix
280
  list is not present, then a new list is created.
281
  If the encoding of the error file differs from the
282
  'encoding' option, you can use the 'makeencoding'
@@ -317,7 +317,7 @@ processing a quickfix or location list command, it will be aborted.
317
  Read the error list from the current buffer and add
318
  the errors to the current quickfix list. If a
319
  quickfix list is not present, then a new list is
320
- created. Otherwise, same as ":cbuffer".
321
 
322
  *:laddb* *:laddbuffer*
323
  :[range]laddb[uffer] [bufnr]
@@ -354,9 +354,9 @@ processing a quickfix or location list command, it will be aborted.
354
 
355
  *:cadde* *:caddexpr*
356
  :cadde[xpr] {expr} Evaluate {expr} and add the resulting lines to the
357
- current quickfix list. If a quickfix list is not
358
- present, then a new list is created. The current
359
- cursor position will not be changed. See |:cexpr| for
360
  more information.
361
  Example: >
362
  :g/mypattern/caddexpr expand("%") .. ":" .. line(".") .. ":" .. getline(".")
@@ -368,11 +368,12 @@ processing a quickfix or location list command, it will be aborted.
368
  *:cl* *:clist*
369
  :cl[ist] [from] [, [to]]
370
  List all errors that are valid |quickfix-valid|.
371
- If numbers [from] and/or [to] are given, the respective
372
- range of errors is listed. A negative number counts
373
- from the last error backwards, -1 being the last error.
 
374
  The |:filter| command can be used to display only the
375
- quickfix entries matching a supplied pattern. The
376
  pattern is matched against the filename, module name,
377
  pattern and text of the entry.
378
 
@@ -408,7 +409,7 @@ the error location may not be correct. If you quit Vim and start again the
408
  marks are lost and the error locations may not be correct anymore.
409
 
410
  Two autocommands are available for running commands before and after a
411
- quickfix command (':make', ':grep' and so on) is executed. See
412
  |QuickFixCmdPre| and |QuickFixCmdPost| for details.
413
 
414
  *QuickFixCmdPost-example*
@@ -427,11 +428,11 @@ use this code: >
427
  Another option is using 'makeencoding'.
428
 
429
  *quickfix-title*
430
- Every quickfix and location list has a title. By default the title is set to
431
- the command that created the list. The |getqflist()| and |getloclist()|
432
  functions can be used to get the title of a quickfix and a location list
433
- respectively. The |setqflist()| and |setloclist()| functions can be used to
434
- modify the title of a quickfix and location list respectively. Examples: >
435
  call setqflist([], 'a', {'title' : 'Cmd output'})
436
  echo getqflist({'title' : 1})
437
  call setloclist(3, [], 'a', {'title' : 'Cmd output'})
@@ -440,32 +441,32 @@ modify the title of a quickfix and location list respectively. Examples: >
440
  *quickfix-index*
441
  When you jump to a quickfix/location list entry using any of the quickfix
442
  commands (e.g. |:cc|, |:cnext|, |:cprev|, etc.), that entry becomes the
443
- currently selected entry. The index of the currently selected entry in a
444
  quickfix/location list can be obtained using the getqflist()/getloclist()
445
- functions. Examples: >
446
  echo getqflist({'idx' : 0}).idx
447
  echo getqflist({'id' : qfid, 'idx' : 0}).idx
448
  echo getloclist(2, {'idx' : 0}).idx
449
  <
450
  For a new quickfix list, the first entry is selected and the index is 1. Any
451
  entry in any quickfix/location list can be set as the currently selected entry
452
- using the setqflist() function. Examples: >
453
  call setqflist([], 'a', {'idx' : 12})
454
  call setqflist([], 'a', {'id' : qfid, 'idx' : 7})
455
  call setloclist(1, [], 'a', {'idx' : 7})
456
  <
457
  *quickfix-size*
458
  You can get the number of entries (size) in a quickfix and a location list
459
- using the |getqflist()| and |getloclist()| functions respectively. Examples: >
460
  echo getqflist({'size' : 1})
461
  echo getloclist(5, {'size' : 1})
462
  <
463
  *quickfix-context*
464
  Any Vim type can be associated as a context with a quickfix or location list.
465
  The |setqflist()| and the |setloclist()| functions can be used to associate a
466
- context with a quickfix and a location list respectively. The |getqflist()|
467
  and the |getloclist()| functions can be used to retrieve the context of a
468
- quickfix and a location list respectively. This is useful for a Vim plugin
469
  dealing with multiple quickfix/location lists.
470
  Examples: >
471
 
@@ -479,11 +480,11 @@ Examples: >
479
  <
480
  *quickfix-parse*
481
  You can parse a list of lines using 'errorformat' without creating or
482
- modifying a quickfix list using the |getqflist()| function. Examples: >
483
  echo getqflist({'lines' : ["F1:10:Line10", "F2:20:Line20"]})
484
  echo getqflist({'lines' : systemlist('grep -Hn quickfix *')})
485
  This returns a dictionary where the "items" key contains the list of quickfix
486
- entries parsed from lines. The following shows how to use a custom
487
  'errorformat' to parse the lines without modifying the 'errorformat' option: >
488
  echo getqflist({'efm' : '%f#%l#%m', 'lines' : ['F1#10#Line']})
489
  <
@@ -562,11 +563,11 @@ Then you can use the following commands to filter a quickfix/location list: >
562
  :Lfilter[!] /{pat}/
563
 
564
  The |:Cfilter| command creates a new quickfix list from the entries matching
565
- {pat} in the current quickfix list. {pat} is a Vim |regular-expression|
566
- pattern. Both the file name and the text of the entries are matched against
567
- {pat}. If the optional ! is supplied, then the entries not matching {pat} are
568
- used. The pattern can be optionally enclosed using one of the following
569
- characters: ', ", /. If the pattern is empty, then the last used search
570
  pattern is used.
571
 
572
  The |:Lfilter| command does the same as |:Cfilter| but operates on the current
@@ -595,19 +596,19 @@ can go back to the unfiltered list using the |:colder|/|:lolder| command.
595
  'buftype' equal to "quickfix". Don't change this!
596
  The window will have the w:quickfix_title variable set
597
  which will indicate the command that produced the
598
- quickfix list. This can be used to compose a custom
599
  status line if the value of 'statusline' is adjusted
600
- properly. Whenever this buffer is modified by a
601
  quickfix command or function, the |b:changedtick|
602
  variable is incremented. You can get the number of
603
  this buffer using the getqflist() and getloclist()
604
- functions by passing the "qfbufnr" item. For a
605
  location list, this buffer is wiped out when the
606
  location list is removed.
607
 
608
  *:lop* *:lopen*
609
  :lop[en] [height] Open a window to show the location list for the
610
- current window. Works only when the location list for
611
  the current window is present. You can have more than
612
  one location window opened at a time. Otherwise, it
613
  acts the same as ":copen".
@@ -714,7 +715,7 @@ The location list window displays the entries in a location list. When you
714
  open a location list window, it is created below the current window and
715
  displays the location list for the current window. The location list window
716
  is similar to the quickfix window, except that you can have more than one
717
- location list window open at a time. When you use a location list command in
718
  this window, the displayed location list is used.
719
 
720
  When you select a file from the location list window, the following steps are
@@ -743,7 +744,7 @@ present). Examples: >
743
  <
744
  *getqflist-examples*
745
  The |getqflist()| and |getloclist()| functions can be used to get the various
746
- attributes of a quickfix and location list respectively. Some examples for
747
  using these functions are below:
748
  >
749
  " get the title of the current quickfix list
@@ -809,7 +810,7 @@ using these functions are below:
809
  <
810
  *setqflist-examples*
811
  The |setqflist()| and |setloclist()| functions can be used to set the various
812
- attributes of a quickfix and location list respectively. Some examples for
813
  using these functions are below:
814
  >
815
  " create an empty quickfix list with a title and a context
@@ -893,7 +894,7 @@ existing error lists as the current one.
893
  error list 3 of 3; 15 errors :grep ex_help *.c ~
894
 
895
  When [count] is given, then the count'th quickfix
896
- list is made the current list. Example: >
897
  " Make the 4th quickfix list current
898
  :4chistory
899
  <
@@ -910,7 +911,7 @@ lists, use ":cnewer 99" first.
910
 
911
  To get the number of lists in the quickfix and location list stack, you can
912
  use the |getqflist()| and |getloclist()| functions respectively with the list
913
- number set to the special value '$'. Examples: >
914
  echo getqflist({'nr' : '$'}).nr
915
  echo getloclist(3, {'nr' : '$'}).nr
916
  To get the number of the current list in the stack: >
@@ -1066,7 +1067,7 @@ commands can be combined to create a NewGrep command: >
1066
  buffer are abandoned.
1067
 
1068
  'f' When the 'f' flag is specified, fuzzy string
1069
- matching is used to find matching lines. In this
1070
  case, {pattern} is treated as a literal string
1071
  instead of a regular expression. See
1072
  |fuzzy-matching| for more information about fuzzy
@@ -1181,8 +1182,8 @@ arguments to :grep are passed straight to the "grep" program, so you can use
1181
  whatever options your "grep" supports.
1182
 
1183
  By default, :grep invokes grep with the -n option (show file and line
1184
- numbers). You can change this with the 'grepprg' option. You will need to set
1185
- 'grepprg' if:
1186
 
1187
  a) You are using a program that isn't called "grep"
1188
  b) You have to call grep with a full path
@@ -1282,7 +1283,7 @@ Use the |compiler-make| plugin to undo the effect of a compiler plugin.
1282
 
1283
  CPPCHECK *quickfix-cppcheck* *compiler-cppcheck*
1284
 
1285
- Use g/b:`c_cppcheck_params` to set cppcheck parameters. The global
1286
  settings by default include
1287
 
1288
  - `--verbose`: Enables verbose output.
@@ -1297,10 +1298,10 @@ For C++ files (`filetype == 'cpp'`), the `--language=c++` option is added to
1297
  ensure Cppcheck treats the file as C++.
1298
 
1299
  If compile_commands.json is present in the current directory, it is added as a
1300
- `--project` parameter to the command line. Otherwise, by default the
1301
- directories in &path are passed as include directories. These can be set by
1302
- g/b:`c_cppcheck_includes` as a list of `-I` flags. Tim Pope's vim-apathy
1303
- plug-in [0] can expand &path. To also append the folders in a git repo use >
1304
 
1305
  let &l:path = join(systemlist('git ls-tree -d --name-only -r HEAD'), ',')
1306
 
@@ -1308,12 +1309,13 @@ plug-in [0] can expand &path. To also append the folders in a git repo use >
1308
 
1309
  DOTNET *compiler-dotnet*
1310
 
1311
- The .NET CLI compiler outputs both errors and warnings by default. The output
1312
  may be limited to include only errors, by setting the g:dotnet_errors_only
1313
  variable to |v:true|.
1314
 
1315
- The associated project name is included in each error and warning. To suppress
1316
- the project name, set the g:dotnet_show_project_file variable to |v:false|.
 
1317
 
1318
  Example: limit output to only display errors, and suppress the project name: >
1319
  let dotnet_errors_only = v:true
@@ -1600,9 +1602,9 @@ manpage) as input and expects that the output file type extension is passed to
1600
  make, say :make html or :make pdf.
1601
 
1602
  Additional arguments can be passed to groff by setting them in
1603
- `b:groff_compiler_args` or `g:groff_compiler_args`. The `language` argument
1604
  passed to groff is set using 'spelllang'; it can be overridden by setting
1605
- `b:groff_compiler_lang`. The default encoding is `UTF-8` and can be changed
1606
  by setting `b:groff_compiler_encoding` or `g:groff_compiler_encoding`.
1607
 
1608
  PANDOC *quickfix-pandoc* *compiler-pandoc*
@@ -1690,8 +1692,8 @@ Included in the distribution compiler for TeX ($VIMRUNTIME/compiler/tex.vim)
1690
  uses make command if possible. If the compiler finds a file named "Makefile"
1691
  or "makefile" in the current directory, it supposes that you want to process
1692
  your *TeX files with make, and the makefile does the right work. In this case
1693
- compiler sets 'errorformat' for *TeX output and leaves 'makeprg' untouched. If
1694
- neither "Makefile" nor "makefile" is found, the compiler will not use make.
1695
  You can force the compiler to ignore makefiles by defining
1696
  b:tex_ignore_makefile or g:tex_ignore_makefile variable (they are checked for
1697
  existence only).
@@ -1731,13 +1733,13 @@ b/g:tsc_makeprg variable. For example: >
1731
 
1732
  TYPST COMPILER *compiler-typst*
1733
 
1734
- Vim includes a compiler plugin for Typst files. This compiler is enabled
1735
  automatically in Typst buffers by the Typst filetype plugin |ft-typst-plugin|.
1736
  Run |:make| to compile the current Typst file.
1737
 
1738
  *g:typst_cmd*
1739
- By default Vim will use "typst" as the command to run the Typst compiler. This
1740
- can be changed by setting the |g:typst_cmd| variable: >
1741
  let g:typst_cmd = "/path/to/other/command"
1742
 
1743
  =============================================================================
@@ -1824,11 +1826,11 @@ or >
1824
  to indicate the column of the error. This is to be used in a multi-line error
1825
  message. See |errorformat-javac| for a useful example.
1826
 
1827
- The "%s" conversion specifies the text to search for, to locate the error line.
1828
- The text is used as a literal string. The anchors "^" and "$" are added to
1829
- the text to locate the error line exactly matching the search text and the
1830
- text is prefixed with the "\V" atom to make it "very nomagic". The "%s"
1831
- conversion can be used to locate lines without a line number in the error
1832
  output. Like the output of the "grep" shell command.
1833
  When the pattern is present the line number will not be used.
1834
 
@@ -2019,7 +2021,8 @@ be escaped), meta symbols have to be written with leading '%':
2019
  %~ The single '~' character.
2020
  When using character classes in expressions (see |/\i| for an overview),
2021
  terms containing the "\+" quantifier can be written in the scanf() "%*"
2022
- notation. Example: "%\\d%\\+" ("\d\+", "any number") is equivalent to "%*\\d".
 
2023
  Important note: The \(...\) grouping of sub-matches can not be used in format
2024
  specifications because it is reserved for internal conversions.
2025
 
@@ -2227,7 +2230,7 @@ You need to put the following in "vim-javac-filter" somewhere in your path
2227
  In English, that sed script:
2228
  - Changes single tabs to single spaces and
2229
  - Moves the line with the filename, line number, error message to just after
2230
- the pointer line. That way, the unused error text between doesn't break
2231
  vim's notion of a "multi-line message" and also doesn't force us to include
2232
  it as a "continuation of a multi-line message."
2233
 
@@ -2356,40 +2359,40 @@ The values displayed in each line correspond to the "bufnr", "lnum", "col" and
2356
  For some quickfix/location lists, the displayed text needs to be customized.
2357
  For example, if only the filename is present for a quickfix entry, then the
2358
  two "|" field separator characters after the filename are not needed. Another
2359
- use case is to customize the path displayed for a filename. By default, the
2360
  complete path (which may be too long) is displayed for files which are not
2361
- under the current directory tree. The file path may need to be simplified to a
2362
- common parent directory.
2363
 
2364
  The displayed text can be customized by setting the 'quickfixtextfunc' option
2365
  to a Vim function. This function will be called with a dict argument and
2366
  should return a List of strings to be displayed in the quickfix or location
2367
- list window. The dict argument will have the following fields:
2368
 
2369
  quickfix set to 1 when called for a quickfix list and 0 when called for
2370
  a location list.
2371
  winid for a location list, set to the id of the window with the
2372
- location list. For a quickfix list, set to 0. Can be used in
2373
  getloclist() to get the location list entry.
2374
  id quickfix or location list identifier
2375
  start_idx index of the first entry for which text should be returned
2376
  end_idx index of the last entry for which text should be returned
2377
 
2378
  The function should return a single line of text to display in the quickfix
2379
- window for each entry from start_idx to end_idx. The function can obtain
2380
  information about the entries using the |getqflist()| function and specifying
2381
- the quickfix list identifier "id". For a location list, getloclist() function
2382
- can be used with the "winid" argument. If an empty list is returned, then the
2383
- default format is used to display all the entries. If an item in the returned
2384
  list is an empty string, then the default format is used to display the
2385
  corresponding entry.
2386
 
2387
  If a quickfix or location list specific customization is needed, then the
2388
  'quickfixtextfunc' attribute of the list can be set using the |setqflist()| or
2389
- |setloclist()| function. This overrides the global 'quickfixtextfunc' option.
2390
 
2391
  The example below displays the list of old files (|v:oldfiles|) in a quickfix
2392
- window. As there is no line, column number and error text information
2393
  associated with each entry, the 'quickfixtextfunc' function returns only the
2394
  filename.
2395
  Example: >
 
1
+ *quickfix.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
 
45
 
46
  *quickfix-stack* *quickfix-ID* *E1545*
47
  Each quickfix list has a unique identifier called the quickfix ID and this
48
+ number will not change within a Vim session. The |getqflist()| function can be
49
+ used to get the identifier assigned to a list. There is also a quickfix list
50
  number which may change whenever more than 'chistory' lists are added to a
51
  quickfix stack.
52
 
53
  *location-list* *E776*
54
+ A location list is a window-local quickfix list. You get one after commands
55
  like `:lvimgrep`, `:lgrep`, `:lhelpgrep`, `:lmake`, etc., which create a
56
  location list instead of a quickfix list as the corresponding `:vimgrep`,
57
  `:grep`, `:helpgrep`, `:make` do.
 
67
  *quickfix-changedtick*
68
  Every quickfix and location list has a read-only changedtick variable that
69
  tracks the total number of changes made to the list. Every time the quickfix
70
+ list is modified, this count is incremented. This can be used to perform an
71
  action only when the list has changed. The |getqflist()| and |getloclist()|
72
  functions can be used to query the current value of changedtick. You cannot
73
  change the changedtick variable.
 
87
  *:cc*
88
  :cc[!] [nr] Display error [nr]. If [nr] is omitted, the same
89
  :[nr]cc[!] error is displayed again. Without [!] this doesn't
90
+ work when jumping to another buffer, the current
91
+ buffer has been changed, there is the only window for
92
+ the buffer and both 'hidden' and 'autowrite' are off.
93
  When jumping to another buffer with [!] any changes to
94
  the current buffer are lost, unless 'hidden' is set or
95
  there is another window for this buffer.
 
131
  used. If there are no errors, then an error message
132
  is displayed. Assumes that the entries in a quickfix
133
  list are sorted by their buffer number and line
134
+ number. If there are multiple errors on the same
135
+ line, then only the first entry is used. If [count]
136
+ exceeds the number of entries above the current line,
137
+ then the first error in the file is selected.
138
 
139
  *:lab* *:labove*
140
  :[count]lab[ove] Same as ":cabove", except the location list for the
 
276
 
277
  *:caddf* *:caddfile*
278
  :caddf[ile] [errorfile] Read the error file and add the errors from the
279
+ errorfile to the current quickfix list. If a quickfix
280
  list is not present, then a new list is created.
281
  If the encoding of the error file differs from the
282
  'encoding' option, you can use the 'makeencoding'
 
317
  Read the error list from the current buffer and add
318
  the errors to the current quickfix list. If a
319
  quickfix list is not present, then a new list is
320
+ created. Otherwise, same as ":cbuffer".
321
 
322
  *:laddb* *:laddbuffer*
323
  :[range]laddb[uffer] [bufnr]
 
354
 
355
  *:cadde* *:caddexpr*
356
  :cadde[xpr] {expr} Evaluate {expr} and add the resulting lines to the
357
+ current quickfix list. If a quickfix list is not
358
+ present, then a new list is created. The current
359
+ cursor position will not be changed. See |:cexpr| for
360
  more information.
361
  Example: >
362
  :g/mypattern/caddexpr expand("%") .. ":" .. line(".") .. ":" .. getline(".")
 
368
  *:cl* *:clist*
369
  :cl[ist] [from] [, [to]]
370
  List all errors that are valid |quickfix-valid|.
371
+ If numbers [from] and/or [to] are given, the
372
+ respective range of errors is listed. A negative
373
+ number counts from the last error backwards, -1 being
374
+ the last error.
375
  The |:filter| command can be used to display only the
376
+ quickfix entries matching a supplied pattern. The
377
  pattern is matched against the filename, module name,
378
  pattern and text of the entry.
379
 
 
409
  marks are lost and the error locations may not be correct anymore.
410
 
411
  Two autocommands are available for running commands before and after a
412
+ quickfix command (':make', ':grep' and so on) is executed. See
413
  |QuickFixCmdPre| and |QuickFixCmdPost| for details.
414
 
415
  *QuickFixCmdPost-example*
 
428
  Another option is using 'makeencoding'.
429
 
430
  *quickfix-title*
431
+ Every quickfix and location list has a title. By default the title is set to
432
+ the command that created the list. The |getqflist()| and |getloclist()|
433
  functions can be used to get the title of a quickfix and a location list
434
+ respectively. The |setqflist()| and |setloclist()| functions can be used to
435
+ modify the title of a quickfix and location list respectively. Examples: >
436
  call setqflist([], 'a', {'title' : 'Cmd output'})
437
  echo getqflist({'title' : 1})
438
  call setloclist(3, [], 'a', {'title' : 'Cmd output'})
 
441
  *quickfix-index*
442
  When you jump to a quickfix/location list entry using any of the quickfix
443
  commands (e.g. |:cc|, |:cnext|, |:cprev|, etc.), that entry becomes the
444
+ currently selected entry. The index of the currently selected entry in a
445
  quickfix/location list can be obtained using the getqflist()/getloclist()
446
+ functions. Examples: >
447
  echo getqflist({'idx' : 0}).idx
448
  echo getqflist({'id' : qfid, 'idx' : 0}).idx
449
  echo getloclist(2, {'idx' : 0}).idx
450
  <
451
  For a new quickfix list, the first entry is selected and the index is 1. Any
452
  entry in any quickfix/location list can be set as the currently selected entry
453
+ using the setqflist() function. Examples: >
454
  call setqflist([], 'a', {'idx' : 12})
455
  call setqflist([], 'a', {'id' : qfid, 'idx' : 7})
456
  call setloclist(1, [], 'a', {'idx' : 7})
457
  <
458
  *quickfix-size*
459
  You can get the number of entries (size) in a quickfix and a location list
460
+ using the |getqflist()| and |getloclist()| functions respectively. Examples: >
461
  echo getqflist({'size' : 1})
462
  echo getloclist(5, {'size' : 1})
463
  <
464
  *quickfix-context*
465
  Any Vim type can be associated as a context with a quickfix or location list.
466
  The |setqflist()| and the |setloclist()| functions can be used to associate a
467
+ context with a quickfix and a location list respectively. The |getqflist()|
468
  and the |getloclist()| functions can be used to retrieve the context of a
469
+ quickfix and a location list respectively. This is useful for a Vim plugin
470
  dealing with multiple quickfix/location lists.
471
  Examples: >
472
 
 
480
  <
481
  *quickfix-parse*
482
  You can parse a list of lines using 'errorformat' without creating or
483
+ modifying a quickfix list using the |getqflist()| function. Examples: >
484
  echo getqflist({'lines' : ["F1:10:Line10", "F2:20:Line20"]})
485
  echo getqflist({'lines' : systemlist('grep -Hn quickfix *')})
486
  This returns a dictionary where the "items" key contains the list of quickfix
487
+ entries parsed from lines. The following shows how to use a custom
488
  'errorformat' to parse the lines without modifying the 'errorformat' option: >
489
  echo getqflist({'efm' : '%f#%l#%m', 'lines' : ['F1#10#Line']})
490
  <
 
563
  :Lfilter[!] /{pat}/
564
 
565
  The |:Cfilter| command creates a new quickfix list from the entries matching
566
+ {pat} in the current quickfix list. {pat} is a Vim |regular-expression|
567
+ pattern. Both the file name and the text of the entries are matched against
568
+ {pat}. If the optional ! is supplied, then the entries not matching {pat} are
569
+ used. The pattern can be optionally enclosed using one of the following
570
+ characters: ', ", /. If the pattern is empty, then the last used search
571
  pattern is used.
572
 
573
  The |:Lfilter| command does the same as |:Cfilter| but operates on the current
 
596
  'buftype' equal to "quickfix". Don't change this!
597
  The window will have the w:quickfix_title variable set
598
  which will indicate the command that produced the
599
+ quickfix list. This can be used to compose a custom
600
  status line if the value of 'statusline' is adjusted
601
+ properly. Whenever this buffer is modified by a
602
  quickfix command or function, the |b:changedtick|
603
  variable is incremented. You can get the number of
604
  this buffer using the getqflist() and getloclist()
605
+ functions by passing the "qfbufnr" item. For a
606
  location list, this buffer is wiped out when the
607
  location list is removed.
608
 
609
  *:lop* *:lopen*
610
  :lop[en] [height] Open a window to show the location list for the
611
+ current window. Works only when the location list for
612
  the current window is present. You can have more than
613
  one location window opened at a time. Otherwise, it
614
  acts the same as ":copen".
 
715
  open a location list window, it is created below the current window and
716
  displays the location list for the current window. The location list window
717
  is similar to the quickfix window, except that you can have more than one
718
+ location list window open at a time. When you use a location list command in
719
  this window, the displayed location list is used.
720
 
721
  When you select a file from the location list window, the following steps are
 
744
  <
745
  *getqflist-examples*
746
  The |getqflist()| and |getloclist()| functions can be used to get the various
747
+ attributes of a quickfix and location list respectively. Some examples for
748
  using these functions are below:
749
  >
750
  " get the title of the current quickfix list
 
810
  <
811
  *setqflist-examples*
812
  The |setqflist()| and |setloclist()| functions can be used to set the various
813
+ attributes of a quickfix and location list respectively. Some examples for
814
  using these functions are below:
815
  >
816
  " create an empty quickfix list with a title and a context
 
894
  error list 3 of 3; 15 errors :grep ex_help *.c ~
895
 
896
  When [count] is given, then the count'th quickfix
897
+ list is made the current list. Example: >
898
  " Make the 4th quickfix list current
899
  :4chistory
900
  <
 
911
 
912
  To get the number of lists in the quickfix and location list stack, you can
913
  use the |getqflist()| and |getloclist()| functions respectively with the list
914
+ number set to the special value '$'. Examples: >
915
  echo getqflist({'nr' : '$'}).nr
916
  echo getloclist(3, {'nr' : '$'}).nr
917
  To get the number of the current list in the stack: >
 
1067
  buffer are abandoned.
1068
 
1069
  'f' When the 'f' flag is specified, fuzzy string
1070
+ matching is used to find matching lines. In this
1071
  case, {pattern} is treated as a literal string
1072
  instead of a regular expression. See
1073
  |fuzzy-matching| for more information about fuzzy
 
1182
  whatever options your "grep" supports.
1183
 
1184
  By default, :grep invokes grep with the -n option (show file and line
1185
+ numbers). You can change this with the 'grepprg' option. You will need to
1186
+ set 'grepprg' if:
1187
 
1188
  a) You are using a program that isn't called "grep"
1189
  b) You have to call grep with a full path
 
1283
 
1284
  CPPCHECK *quickfix-cppcheck* *compiler-cppcheck*
1285
 
1286
+ Use g/b:`c_cppcheck_params` to set cppcheck parameters. The global
1287
  settings by default include
1288
 
1289
  - `--verbose`: Enables verbose output.
 
1298
  ensure Cppcheck treats the file as C++.
1299
 
1300
  If compile_commands.json is present in the current directory, it is added as a
1301
+ `--project` parameter to the command line. Otherwise, by default the
1302
+ directories in &path are passed as include directories. These can be set by
1303
+ g/b:`c_cppcheck_includes` as a list of `-I` flags. Tim Pope's vim-apathy
1304
+ plug-in [0] can expand &path. To also append the folders in a git repo use >
1305
 
1306
  let &l:path = join(systemlist('git ls-tree -d --name-only -r HEAD'), ',')
1307
 
 
1309
 
1310
  DOTNET *compiler-dotnet*
1311
 
1312
+ The .NET CLI compiler outputs both errors and warnings by default. The output
1313
  may be limited to include only errors, by setting the g:dotnet_errors_only
1314
  variable to |v:true|.
1315
 
1316
+ The associated project name is included in each error and warning. To
1317
+ suppress the project name, set the g:dotnet_show_project_file variable to
1318
+ |v:false|.
1319
 
1320
  Example: limit output to only display errors, and suppress the project name: >
1321
  let dotnet_errors_only = v:true
 
1602
  make, say :make html or :make pdf.
1603
 
1604
  Additional arguments can be passed to groff by setting them in
1605
+ `b:groff_compiler_args` or `g:groff_compiler_args`. The `language` argument
1606
  passed to groff is set using 'spelllang'; it can be overridden by setting
1607
+ `b:groff_compiler_lang`. The default encoding is `UTF-8` and can be changed
1608
  by setting `b:groff_compiler_encoding` or `g:groff_compiler_encoding`.
1609
 
1610
  PANDOC *quickfix-pandoc* *compiler-pandoc*
 
1692
  uses make command if possible. If the compiler finds a file named "Makefile"
1693
  or "makefile" in the current directory, it supposes that you want to process
1694
  your *TeX files with make, and the makefile does the right work. In this case
1695
+ compiler sets 'errorformat' for *TeX output and leaves 'makeprg' untouched.
1696
+ If neither "Makefile" nor "makefile" is found, the compiler will not use make.
1697
  You can force the compiler to ignore makefiles by defining
1698
  b:tex_ignore_makefile or g:tex_ignore_makefile variable (they are checked for
1699
  existence only).
 
1733
 
1734
  TYPST COMPILER *compiler-typst*
1735
 
1736
+ Vim includes a compiler plugin for Typst files. This compiler is enabled
1737
  automatically in Typst buffers by the Typst filetype plugin |ft-typst-plugin|.
1738
  Run |:make| to compile the current Typst file.
1739
 
1740
  *g:typst_cmd*
1741
+ By default Vim will use "typst" as the command to run the Typst compiler.
1742
+ This can be changed by setting the |g:typst_cmd| variable: >
1743
  let g:typst_cmd = "/path/to/other/command"
1744
 
1745
  =============================================================================
 
1826
  to indicate the column of the error. This is to be used in a multi-line error
1827
  message. See |errorformat-javac| for a useful example.
1828
 
1829
+ The "%s" conversion specifies the text to search for, to locate the error
1830
+ line. The text is used as a literal string. The anchors "^" and "$" are
1831
+ added to the text to locate the error line exactly matching the search text
1832
+ and the text is prefixed with the "\V" atom to make it "very nomagic". The
1833
+ "%s" conversion can be used to locate lines without a line number in the error
1834
  output. Like the output of the "grep" shell command.
1835
  When the pattern is present the line number will not be used.
1836
 
 
2021
  %~ The single '~' character.
2022
  When using character classes in expressions (see |/\i| for an overview),
2023
  terms containing the "\+" quantifier can be written in the scanf() "%*"
2024
+ notation. Example: "%\\d%\\+" ("\d\+", "any number") is equivalent to
2025
+ "%*\\d".
2026
  Important note: The \(...\) grouping of sub-matches can not be used in format
2027
  specifications because it is reserved for internal conversions.
2028
 
 
2230
  In English, that sed script:
2231
  - Changes single tabs to single spaces and
2232
  - Moves the line with the filename, line number, error message to just after
2233
+ the pointer line. That way, the unused error text between doesn't break
2234
  vim's notion of a "multi-line message" and also doesn't force us to include
2235
  it as a "continuation of a multi-line message."
2236
 
 
2359
  For some quickfix/location lists, the displayed text needs to be customized.
2360
  For example, if only the filename is present for a quickfix entry, then the
2361
  two "|" field separator characters after the filename are not needed. Another
2362
+ use case is to customize the path displayed for a filename. By default, the
2363
  complete path (which may be too long) is displayed for files which are not
2364
+ under the current directory tree. The file path may need to be simplified to
2365
+ a common parent directory.
2366
 
2367
  The displayed text can be customized by setting the 'quickfixtextfunc' option
2368
  to a Vim function. This function will be called with a dict argument and
2369
  should return a List of strings to be displayed in the quickfix or location
2370
+ list window. The dict argument will have the following fields:
2371
 
2372
  quickfix set to 1 when called for a quickfix list and 0 when called for
2373
  a location list.
2374
  winid for a location list, set to the id of the window with the
2375
+ location list. For a quickfix list, set to 0. Can be used in
2376
  getloclist() to get the location list entry.
2377
  id quickfix or location list identifier
2378
  start_idx index of the first entry for which text should be returned
2379
  end_idx index of the last entry for which text should be returned
2380
 
2381
  The function should return a single line of text to display in the quickfix
2382
+ window for each entry from start_idx to end_idx. The function can obtain
2383
  information about the entries using the |getqflist()| function and specifying
2384
+ the quickfix list identifier "id". For a location list, getloclist() function
2385
+ can be used with the "winid" argument. If an empty list is returned, then the
2386
+ default format is used to display all the entries. If an item in the returned
2387
  list is an empty string, then the default format is used to display the
2388
  corresponding entry.
2389
 
2390
  If a quickfix or location list specific customization is needed, then the
2391
  'quickfixtextfunc' attribute of the list can be set using the |setqflist()| or
2392
+ |setloclist()| function. This overrides the global 'quickfixtextfunc' option.
2393
 
2394
  The example below displays the list of old files (|v:oldfiles|) in a quickfix
2395
+ window. As there is no line, column number and error text information
2396
  associated with each entry, the 'quickfixtextfunc' function returns only the
2397
  filename.
2398
  Example: >
runtime/doc/recover.txt CHANGED
@@ -1,4 +1,4 @@
1
- *recover.txt* For Vim version 9.1. Last change: 2023 Apr 22
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
@@ -88,7 +88,7 @@ The 'swapfile' option can be reset to avoid creating a swapfile. And the
88
  |:noswapfile| modifier can be used to not create a swapfile for a new buffer.
89
 
90
  :nos[wapfile] {command} *:nos* *:noswapfile*
91
- Execute {command}. If it contains a command that loads a new
92
  buffer, it will be loaded without creating a swapfile and the
93
  'swapfile' option will be reset. If a buffer already had a
94
  swapfile it is not removed and 'swapfile' is not reset.
 
1
+ *recover.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
 
88
  |:noswapfile| modifier can be used to not create a swapfile for a new buffer.
89
 
90
  :nos[wapfile] {command} *:nos* *:noswapfile*
91
+ Execute {command}. If it contains a command that loads a new
92
  buffer, it will be loaded without creating a swapfile and the
93
  'swapfile' option will be reset. If a buffer already had a
94
  swapfile it is not removed and 'swapfile' is not reset.
runtime/doc/repeat.txt CHANGED
@@ -1,4 +1,4 @@
1
- *repeat.txt* For Vim version 9.1. Last change: 2025 Jul 15
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
@@ -86,7 +86,7 @@ line is aborted and the global command continues with the next marked or
86
  unmarked line.
87
  *E147*
88
  When the command is used recursively, it only works on one line. Giving a
89
- range is then not allowed. This is useful to find all lines that match a
90
  pattern and do not match another pattern: >
91
  :g/found/v/notfound/{cmd}
92
  This first finds all lines containing "found", but only executes {cmd} when
@@ -157,18 +157,18 @@ q Stops recording. (Implementation note: The 'q' that
157
  @@ Repeat the previous @{0-9a-z":*} [count] times.
158
 
159
  *:@*
160
- :[addr]@{0-9a-z".=*+} Execute the contents of register {0-9a-z".=*+} as an Ex
161
- command. First set cursor at line [addr] (default is
162
- current line). When the last line in the register does
163
- not have a <CR> it will be added automatically when
164
- the 'e' flag is present in 'cpoptions'.
165
  For ":@=" the last used expression is used. The
166
  result of evaluating the expression is executed as an
167
  Ex command.
168
  Mappings are not recognized in these commands.
169
  When the |line-continuation| character (\) is present
170
  at the beginning of a line in a linewise register,
171
- then it is combined with the previous line. This is
172
  useful for yanking and executing parts of a Vim
173
  script.
174
  Future: Will execute the register for each line in the
@@ -206,7 +206,7 @@ For writing a Vim script, see chapter 41 of the user manual |usr_41.txt|.
206
 
207
  When sourcing commands from the current buffer, the
208
  same script-ID |<SID>| is used even if the buffer is
209
- sourced multiple times. If a buffer is sourced more
210
  than once, then the functions in the buffer are
211
  defined again.
212
 
@@ -226,9 +226,9 @@ For writing a Vim script, see chapter 41 of the user manual |usr_41.txt|.
226
  This works like the range started with the
227
  ":vim9script noclear" command. The "++clear" argument
228
  can be used to clear the script-local variables and
229
- functions before sourcing the script. This works like
230
  the range started with the `:vim9script` command
231
- without the "noclear" argument. See |vim9-reload| for
232
  more information.
233
  Examples: >
234
  :4,5source
@@ -390,7 +390,7 @@ For writing a Vim script, see chapter 41 of the user manual |usr_41.txt|.
390
  to use ":scriptencoding utf-8" then.
391
 
392
  If you set the 'encoding' option in your |.vimrc|,
393
- `:scriptencoding` must be placed after that. E.g.: >
394
  set encoding=utf-8
395
  scriptencoding utf-8
396
  <
@@ -615,8 +615,8 @@ advantages over normal plugins:
615
 
616
  Using a package and loading automatically ~
617
 
618
- Let's assume your Vim files are in the "~/.vim" directory and you want to add a
619
- package from a zip archive "/tmp/foopack.zip": >
620
  % mkdir -p ~/.vim/pack/foo
621
  % cd ~/.vim/pack/foo
622
  % unzip /tmp/foopack.zip
@@ -647,9 +647,9 @@ find the syntax/some.vim file, because its directory is in 'runtimepath'.
647
 
648
  Vim will also load ftdetect files, if there are any.
649
 
650
- Note that the files under "pack/foo/opt" are not loaded automatically, only the
651
- ones under "pack/foo/start". See |pack-add| below for how the "opt" directory
652
- is used.
653
 
654
  Loading packages automatically will not happen if loading plugins is disabled,
655
  see |load-plugins|.
@@ -725,8 +725,8 @@ This assumes you write one or more plugins that you distribute as a package.
725
 
726
  If you have two unrelated plugins you would use two packages, so that Vim
727
  users can choose what they include or not. Or you can decide to use one
728
- package with optional plugins, and tell the user to add the preferred ones with
729
- `:packadd`.
730
 
731
  Decide how you want to distribute the package. You can create an archive or
732
  you could use a repository. An archive can be used by more users, but is a
@@ -790,7 +790,7 @@ Where:
790
 
791
  The directory structure where the message translation files should be placed
792
  is (from the top-level directory of the package):
793
- "lang/<lang_id>/LC_MESSAGES". For the format of <lang_id> see |multi-lang|.
794
  This function needs to be called only once during the initialization of the
795
  plugin.
796
  Once this is done, the |gettext()| function can be used to retrieve translated
@@ -818,27 +818,28 @@ PLUGPACKAGE A variable containing the name of the package that we
818
  |gettext()| functions, for example, "foobar".
819
  PO_PLUG_INPUTLIST A variable containing scripts that have strings
820
  to translate, i.e. where we specified the |gettext()|
821
- function. Scripts are specified with an absolute
822
- or relative path. Example: start/foobar/plugin/bar.vim
 
823
  use blanks to separate scripts.
824
  POT_PLUGPACKAGE_PATH A variable containing the directory where the prepared
825
- POT file will be saved. This is not a required variable,
826
- if no directory is specified, then the POT file will
827
- be placed in the "src/po" directory.
828
  VIMPROG A variable containing a directory with a working Vim.
829
  If the Vim editor is already built and installed, and
830
  is contained in the $PATH environment variable,
831
  then you can specify just the name of the vim
832
  executable.
833
- {package}.pot This is the Target. It is specified as the name of
834
  the package, for example, "foobar" with the addition
835
  of the .pot extension.
836
  Once a POT file is created, its contents are copied into separate PO files for
837
  each language for which the translation will be prepared.
838
 
839
  When the translation is finished, it is necessary to convert the PO files into
840
- binary MO-files format and place these MO-files into the "lang/" directory, the
841
- structure of which we created earlier.
842
  To do this, run the following commands:
843
  >
844
  cd ~/forkvim/src/po
@@ -851,15 +852,16 @@ Where:
851
  PLUGPACKAGE A variable containing the name of the package that we
852
  specified in the |bindtextdomain()| and |gettext()|
853
  functions, for example, "foobar".
854
- PO_PLUGPACKAGE A variable containing a PO file. The file is specified
855
- with an absolute or relative path. For example,
856
- "~/myproject/translate/en.po"
857
  MO_PLUGPACKAGE_PATH A variable containing the structure of the "lang/"
858
  directory, where the file with translations will be
859
- placed, for example, "foobar.mo". This is not
860
- a required variable, if the directory is not specified,
861
- the MO file will be saved in the "src/po" directory.
862
- {package}.mo This is the Target. It is specified as the name of
 
863
  the package, for example, "foobar" with the addition
864
  of the .mo extension.
865
 
@@ -978,7 +980,7 @@ And the PO file in German:
978
  msgstr "Alle Dateien (*)\t*\n"~
979
 
980
  Now convert these files into MO files so that |gettext()| can display message
981
- translations. Note that since this is not a specialized plugin package, we
982
  will put the MO files in the "lang/" directory of the Vim editor.
983
  Type the following commands:
984
  >
@@ -998,7 +1000,7 @@ Type the following commands:
998
  That's it, the translations are ready and you can see the plugin's messages
999
  in your native language.
1000
 
1001
- Let's also try to translate a plugin package. For example, when a package
1002
  contains several scripts containing strings that need to be translated.
1003
  For example, let's translate the "netrw" package into Japanese.
1004
  For this example, we will translate only a few lines from this package.
@@ -1096,7 +1098,7 @@ plug-in packages.
1096
 
1097
  Dependencies between plugins ~
1098
  *packload-two-steps*
1099
- Suppose you have two plugins that depend on the same functionality. You can
1100
  put the common functionality in an autoload directory, so that it will be
1101
  found automatically. Your package would have these files:
1102
 
@@ -1284,7 +1286,7 @@ DEFINING BREAKPOINTS
1284
 
1285
  :breaka[dd] expr {expression}
1286
  Sets a breakpoint, that will break whenever the {expression}
1287
- evaluates to a different value. Example: >
1288
  :breakadd expr g:lnum
1289
  < Will break, whenever the global variable lnum changes.
1290
 
@@ -1399,7 +1401,7 @@ For example, to profile the one_script.vim script file: >
1399
 
1400
  :prof[ile] stop
1401
  Write the collected profiling information to the logfile and
1402
- stop profiling. You can use the `:profile start` command to
1403
  clear the profiling statistics and start profiling again.
1404
 
1405
  :prof[ile] pause
@@ -1431,8 +1433,8 @@ For example, to profile the one_script.vim script file: >
1431
  collect the profiling statistics.
1432
 
1433
  :profd[el] ... *:profd* *:profdel*
1434
- Stop profiling for the arguments specified. See |:breakdel|
1435
- for the arguments. Examples: >
1436
  profdel func MyFunc
1437
  profdel file MyScript.vim
1438
  profdel here
@@ -1480,9 +1482,9 @@ Profiling should give a good indication of where time is spent, but keep in
1480
  mind there are various things that may clobber the results:
1481
 
1482
  - The accuracy of the time measured depends on the gettimeofday(), or
1483
- clock_gettime() if available, system function. The accuracy ranges from
1484
- 1/100 second to nanoseconds. With clock_gettime() the times are displayed in
1485
- nanoseconds, otherwise microseconds. You can use `has("prof_nsec")`.
1486
 
1487
  - Real elapsed time is measured, if other processes are busy they may cause
1488
  delays at unpredictable moments. You may want to run the profiling several
 
1
+ *repeat.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
 
86
  unmarked line.
87
  *E147*
88
  When the command is used recursively, it only works on one line. Giving a
89
+ range is then not allowed. This is useful to find all lines that match a
90
  pattern and do not match another pattern: >
91
  :g/found/v/notfound/{cmd}
92
  This first finds all lines containing "found", but only executes {cmd} when
 
157
  @@ Repeat the previous @{0-9a-z":*} [count] times.
158
 
159
  *:@*
160
+ :[addr]@{0-9a-z".=*+} Execute the contents of register {0-9a-z".=*+} as an
161
+ Ex command. First set cursor at line [addr] (default
162
+ is current line). When the last line in the register
163
+ does not have a <CR> it will be added automatically
164
+ when the 'e' flag is present in 'cpoptions'.
165
  For ":@=" the last used expression is used. The
166
  result of evaluating the expression is executed as an
167
  Ex command.
168
  Mappings are not recognized in these commands.
169
  When the |line-continuation| character (\) is present
170
  at the beginning of a line in a linewise register,
171
+ then it is combined with the previous line. This is
172
  useful for yanking and executing parts of a Vim
173
  script.
174
  Future: Will execute the register for each line in the
 
206
 
207
  When sourcing commands from the current buffer, the
208
  same script-ID |<SID>| is used even if the buffer is
209
+ sourced multiple times. If a buffer is sourced more
210
  than once, then the functions in the buffer are
211
  defined again.
212
 
 
226
  This works like the range started with the
227
  ":vim9script noclear" command. The "++clear" argument
228
  can be used to clear the script-local variables and
229
+ functions before sourcing the script. This works like
230
  the range started with the `:vim9script` command
231
+ without the "noclear" argument. See |vim9-reload| for
232
  more information.
233
  Examples: >
234
  :4,5source
 
390
  to use ":scriptencoding utf-8" then.
391
 
392
  If you set the 'encoding' option in your |.vimrc|,
393
+ `:scriptencoding` must be placed after that. E.g.: >
394
  set encoding=utf-8
395
  scriptencoding utf-8
396
  <
 
615
 
616
  Using a package and loading automatically ~
617
 
618
+ Let's assume your Vim files are in the "~/.vim" directory and you want to add
619
+ a package from a zip archive "/tmp/foopack.zip": >
620
  % mkdir -p ~/.vim/pack/foo
621
  % cd ~/.vim/pack/foo
622
  % unzip /tmp/foopack.zip
 
647
 
648
  Vim will also load ftdetect files, if there are any.
649
 
650
+ Note that the files under "pack/foo/opt" are not loaded automatically, only
651
+ the ones under "pack/foo/start". See |pack-add| below for how the "opt"
652
+ directory is used.
653
 
654
  Loading packages automatically will not happen if loading plugins is disabled,
655
  see |load-plugins|.
 
725
 
726
  If you have two unrelated plugins you would use two packages, so that Vim
727
  users can choose what they include or not. Or you can decide to use one
728
+ package with optional plugins, and tell the user to add the preferred ones
729
+ with `:packadd`.
730
 
731
  Decide how you want to distribute the package. You can create an archive or
732
  you could use a repository. An archive can be used by more users, but is a
 
790
 
791
  The directory structure where the message translation files should be placed
792
  is (from the top-level directory of the package):
793
+ "lang/<lang_id>/LC_MESSAGES". For the format of <lang_id> see |multi-lang|.
794
  This function needs to be called only once during the initialization of the
795
  plugin.
796
  Once this is done, the |gettext()| function can be used to retrieve translated
 
818
  |gettext()| functions, for example, "foobar".
819
  PO_PLUG_INPUTLIST A variable containing scripts that have strings
820
  to translate, i.e. where we specified the |gettext()|
821
+ function. Scripts are specified with an absolute
822
+ or relative path. Example:
823
+ start/foobar/plugin/bar.vim
824
  use blanks to separate scripts.
825
  POT_PLUGPACKAGE_PATH A variable containing the directory where the prepared
826
+ POT file will be saved. This is not a required
827
+ variable, if no directory is specified, then the POT
828
+ file will be placed in the "src/po" directory.
829
  VIMPROG A variable containing a directory with a working Vim.
830
  If the Vim editor is already built and installed, and
831
  is contained in the $PATH environment variable,
832
  then you can specify just the name of the vim
833
  executable.
834
+ {package}.pot This is the Target. It is specified as the name of
835
  the package, for example, "foobar" with the addition
836
  of the .pot extension.
837
  Once a POT file is created, its contents are copied into separate PO files for
838
  each language for which the translation will be prepared.
839
 
840
  When the translation is finished, it is necessary to convert the PO files into
841
+ binary MO-files format and place these MO-files into the "lang/" directory,
842
+ the structure of which we created earlier.
843
  To do this, run the following commands:
844
  >
845
  cd ~/forkvim/src/po
 
852
  PLUGPACKAGE A variable containing the name of the package that we
853
  specified in the |bindtextdomain()| and |gettext()|
854
  functions, for example, "foobar".
855
+ PO_PLUGPACKAGE A variable containing a PO file. The file is
856
+ specified with an absolute or relative path. For
857
+ example, "~/myproject/translate/en.po"
858
  MO_PLUGPACKAGE_PATH A variable containing the structure of the "lang/"
859
  directory, where the file with translations will be
860
+ placed, for example, "foobar.mo". This is not
861
+ a required variable, if the directory is not
862
+ specified, the MO file will be saved in the "src/po"
863
+ directory.
864
+ {package}.mo This is the Target. It is specified as the name of
865
  the package, for example, "foobar" with the addition
866
  of the .mo extension.
867
 
 
980
  msgstr "Alle Dateien (*)\t*\n"~
981
 
982
  Now convert these files into MO files so that |gettext()| can display message
983
+ translations. Note that since this is not a specialized plugin package, we
984
  will put the MO files in the "lang/" directory of the Vim editor.
985
  Type the following commands:
986
  >
 
1000
  That's it, the translations are ready and you can see the plugin's messages
1001
  in your native language.
1002
 
1003
+ Let's also try to translate a plugin package. For example, when a package
1004
  contains several scripts containing strings that need to be translated.
1005
  For example, let's translate the "netrw" package into Japanese.
1006
  For this example, we will translate only a few lines from this package.
 
1098
 
1099
  Dependencies between plugins ~
1100
  *packload-two-steps*
1101
+ Suppose you have two plugins that depend on the same functionality. You can
1102
  put the common functionality in an autoload directory, so that it will be
1103
  found automatically. Your package would have these files:
1104
 
 
1286
 
1287
  :breaka[dd] expr {expression}
1288
  Sets a breakpoint, that will break whenever the {expression}
1289
+ evaluates to a different value. Example: >
1290
  :breakadd expr g:lnum
1291
  < Will break, whenever the global variable lnum changes.
1292
 
 
1401
 
1402
  :prof[ile] stop
1403
  Write the collected profiling information to the logfile and
1404
+ stop profiling. You can use the `:profile start` command to
1405
  clear the profiling statistics and start profiling again.
1406
 
1407
  :prof[ile] pause
 
1433
  collect the profiling statistics.
1434
 
1435
  :profd[el] ... *:profd* *:profdel*
1436
+ Stop profiling for the arguments specified. See |:breakdel|
1437
+ for the arguments. Examples: >
1438
  profdel func MyFunc
1439
  profdel file MyScript.vim
1440
  profdel here
 
1482
  mind there are various things that may clobber the results:
1483
 
1484
  - The accuracy of the time measured depends on the gettimeofday(), or
1485
+ clock_gettime() if available, system function. The accuracy ranges from
1486
+ 1/100 second to nanoseconds. With clock_gettime() the times are displayed
1487
+ in nanoseconds, otherwise microseconds. You can use `has("prof_nsec")`.
1488
 
1489
  - Real elapsed time is measured, if other processes are busy they may cause
1490
  delays at unpredictable moments. You may want to run the profiling several
runtime/doc/sign.txt CHANGED
@@ -1,4 +1,4 @@
1
- *sign.txt* For Vim version 9.1. Last change: 2025 Oct 05
2
 
3
 
4
  VIM REFERENCE MANUAL by Gordon Prieur
@@ -56,20 +56,20 @@ The color of the column is set with the SignColumn highlight group
56
  If 'cursorline' is enabled, then the CursorLineSign highlight group is used
57
  |hl-CursorLineSign|.
58
  *sign-identifier*
59
- Each placed sign is identified by a number called the sign identifier. This
60
- identifier is used to jump to the sign or to remove the sign. The identifier
61
  is assigned when placing the sign using the |:sign-place| command or the
62
- |sign_place()| function. Each sign identifier should be a unique number. If
63
  multiple placed signs use the same identifier, then jumping to or removing a
64
- sign becomes unpredictable. To avoid overlapping identifiers, sign groups can
65
- be used. The |sign_place()| function can be called with a zero sign identifier
66
  to allocate the next available identifier.
67
 
68
  *sign-group*
69
  Each placed sign can be assigned to either the global group or a named group.
70
  When placing a sign, if a group name is not supplied, or an empty string is
71
- used, then the sign is placed in the global group. Otherwise the sign is
72
- placed in the named group. The sign identifier is unique within a group. The
73
  sign group allows Vim plugins to use unique signs without interfering with
74
  other plugins using signs.
75
 
@@ -78,9 +78,9 @@ Other signs will not show in a popup window. The group name "PopUpMenu" is
78
  used by popup windows where 'cursorline' is set.
79
 
80
  *sign-priority*
81
- Each placed sign is assigned a priority value. When multiple signs are placed
82
  on the same line, the attributes of the sign with the highest priority is used
83
- independently of the sign group. The default priority for a sign is 10, this
84
  value can be changed for different signs by specifying a different value at
85
  definition time. The priority is assigned at the time of placing a sign.
86
 
@@ -213,8 +213,8 @@ See |sign_place()| for the equivalent Vim script function.
213
  By default, the sign is placed in the global sign group.
214
 
215
  By default, the sign is assigned a default priority of 10,
216
- unless specified otherwise by the sign definition. To assign a
217
- different priority value, use "priority={prio}" to specify a
218
  value. The priority is used to determine the sign that is
219
  displayed when multiple signs are placed on the same line.
220
 
@@ -312,7 +312,8 @@ See |sign_unplace()| for the equivalent Vim script function.
312
  all the files it appears in.
313
 
314
  :sig[n] unplace *
315
- Remove all placed signs in the global group from all the files.
 
316
 
317
  :sig[n] unplace * group={group}
318
  Remove all placed signs in group {group} from all the files.
@@ -321,8 +322,8 @@ See |sign_unplace()| for the equivalent Vim script function.
321
  Remove all placed signs in all the groups from all the files.
322
 
323
  :sig[n] unplace
324
- Remove a placed sign at the cursor position. If multiple signs
325
- are placed in the line, then only one is removed.
326
 
327
  :sig[n] unplace group={group}
328
  Remove a placed sign in group {group} at the cursor
@@ -380,7 +381,7 @@ See |sign_jump()| for the equivalent Vim script function.
380
 
381
  :sig[n] jump {id} [buffer={nr}] *E934*
382
  Same, but use buffer {nr}. This fails if buffer {nr} does not
383
- have a name. If the buffer argument is not given, use the
384
  current buffer.
385
 
386
  :sig[n] jump {id} group={group} [buffer={nr}]
@@ -448,7 +449,7 @@ sign_getdefined([{name}]) *sign_getdefined()*
448
  This is similar to the |:sign-list| command.
449
 
450
  If the {name} is not supplied, then a list of all the defined
451
- signs is returned. Otherwise the attribute of the specified
452
  sign is returned.
453
 
454
  Each list item in the returned value is a dictionary with the
@@ -491,15 +492,15 @@ sign_getplaced([{buf} [, {dict}]]) *sign_getplaced()*
491
 
492
  If the optional buffer name {buf} is specified, then only the
493
  list of signs placed in that buffer is returned. For the use
494
- of {buf}, see |bufname()|. The optional {dict} can contain
495
  the following entries:
496
  group select only signs in this group
497
  id select sign with this identifier
498
- lnum select signs placed in this line. For the use
499
  of {lnum}, see |line()|.
500
  If {group} is '*', then signs in all the groups including the
501
- global group are returned. If {group} is not supplied or is an
502
- empty string, then only signs in the global group are
503
  returned. If no arguments are supplied, then signs in the
504
  global group placed in all the buffers are returned.
505
  See |sign-group|.
@@ -507,12 +508,12 @@ sign_getplaced([{buf} [, {dict}]]) *sign_getplaced()*
507
  Each list item in the returned value is a dictionary with the
508
  following entries:
509
  bufnr number of the buffer with the sign
510
- signs list of signs placed in {bufnr}. Each list
511
  item is a dictionary with the below listed
512
  entries
513
 
514
  The dictionary for each sign contains the following entries:
515
- group sign group. Set to '' for the global group.
516
  id identifier of the sign
517
  lnum line number where the sign is placed
518
  name name of the defined sign
@@ -559,7 +560,7 @@ sign_jump({id}, {group}, {buf}) *sign_jump()*
559
  If {group} is an empty string, then the global group is used.
560
  For the use of {buf}, see |bufname()|.
561
 
562
- Returns the line number of the sign. Returns -1 if the
563
  arguments are invalid.
564
 
565
  Example: >
@@ -579,21 +580,21 @@ sign_place({id}, {group}, {name}, {buf} [, {dict}])
579
  similar to the |:sign-place| command.
580
 
581
  If the sign identifier {id} is zero, then a new identifier is
582
- allocated. Otherwise the specified number is used. {group} is
583
- the sign group name. To use the global sign group, use an
584
  empty string. {group} functions as a namespace for {id}, thus
585
- two groups can use the same IDs. Refer to |sign-identifier|
586
  and |sign-group| for more information.
587
 
588
  {name} refers to a defined sign.
589
- {buf} refers to a buffer name or number. For the accepted
590
  values, see |bufname()|.
591
 
592
  The optional {dict} argument supports the following entries:
593
  lnum line number in the file or buffer
594
  {buf} where the sign is to be placed.
595
  For the accepted values, see |line()|.
596
- priority priority of the sign. See
597
  |sign-priority| for more information.
598
 
599
  If the optional {dict} is not specified, then it modifies the
@@ -630,35 +631,35 @@ sign_place({id}, {group}, {name}, {buf} [, {dict}])
630
  sign_placelist({list}) *sign_placelist()*
631
  Place one or more signs. This is similar to the
632
  |sign_place()| function. The {list} argument specifies the
633
- List of signs to place. Each list item is a dict with the
634
  following sign attributes:
635
- buffer Buffer name or number. For the accepted
636
  values, see |bufname()|.
637
- group Sign group. {group} functions as a namespace
638
  for {id}, thus two groups can use the same
639
- IDs. If not specified or set to an empty
640
  string, then the global group is used. See
641
  |sign-group| for more information.
642
- id Sign identifier. If not specified or zero,
643
  then a new unique identifier is allocated.
644
- Otherwise the specified number is used. See
645
  |sign-identifier| for more information.
646
  lnum Line number in the buffer where the sign is to
647
- be placed. For the accepted values, see
648
  |line()|.
649
- name Name of the sign to place. See |sign_define()|
650
  for more information.
651
- priority Priority of the sign. When multiple signs are
652
  placed on a line, the sign with the highest
653
- priority is used. If not specified, the
654
  default value of 10 is used, unless specified
655
- otherwise by the sign definition. See
656
  |sign-priority| for more information.
657
 
658
  If {id} refers to an existing sign, then the existing sign is
659
  modified to use the specified {name} and/or {priority}.
660
 
661
- Returns a List of sign identifiers. If failed to place a
662
  sign, the corresponding list item is set to -1.
663
 
664
  Examples: >
@@ -694,12 +695,12 @@ sign_placelist({list}) *sign_placelist()*
694
 
695
  sign_undefine([{name}]) *sign_undefine()*
696
  sign_undefine({list})
697
- Deletes a previously defined sign {name}. This is similar to
698
- the |:sign-undefine| command. If {name} is not supplied, then
699
  deletes all the defined signs.
700
 
701
  The one argument {list} can be used to undefine a list of
702
- signs. Each list item is the name of a sign.
703
 
704
  Returns 0 on success and -1 on failure. For the one argument
705
  {list} call, returns a list of values one for each undefined
@@ -725,13 +726,13 @@ sign_unplace({group} [, {dict}]) *sign_unplace()*
725
  Remove a previously placed sign in one or more buffers. This
726
  is similar to the |:sign-unplace| command.
727
 
728
- {group} is the sign group name. To use the global sign group,
729
  use an empty string. If {group} is set to '*', then all the
730
  groups including the global group are used.
731
  The signs in {group} are selected based on the entries in
732
  {dict}. The following optional entries in {dict} are
733
  supported:
734
- buffer buffer name or number. See |bufname()|.
735
  id sign identifier
736
  If {dict} is not supplied, then all the signs in {group} are
737
  removed.
@@ -775,15 +776,15 @@ sign_unplacelist({list}) *sign_unplacelist()*
775
 
776
  The {list} argument specifies the List of signs to remove.
777
  Each list item is a dict with the following sign attributes:
778
- buffer buffer name or number. For the accepted
779
- values, see |bufname()|. If not specified,
780
  then the specified sign is removed from all
781
  the buffers.
782
- group sign group name. If not specified or set to an
783
- empty string, then the global sign group is
784
- used. If set to '*', then all the groups
785
  including the global group are used.
786
- id sign identifier. If not specified, then all
787
  the signs in the specified group are removed.
788
 
789
  Returns a List where an entry is set to 0 if the corresponding
 
1
+ *sign.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Gordon Prieur
 
56
  If 'cursorline' is enabled, then the CursorLineSign highlight group is used
57
  |hl-CursorLineSign|.
58
  *sign-identifier*
59
+ Each placed sign is identified by a number called the sign identifier. This
60
+ identifier is used to jump to the sign or to remove the sign. The identifier
61
  is assigned when placing the sign using the |:sign-place| command or the
62
+ |sign_place()| function. Each sign identifier should be a unique number. If
63
  multiple placed signs use the same identifier, then jumping to or removing a
64
+ sign becomes unpredictable. To avoid overlapping identifiers, sign groups can
65
+ be used. The |sign_place()| function can be called with a zero sign identifier
66
  to allocate the next available identifier.
67
 
68
  *sign-group*
69
  Each placed sign can be assigned to either the global group or a named group.
70
  When placing a sign, if a group name is not supplied, or an empty string is
71
+ used, then the sign is placed in the global group. Otherwise the sign is
72
+ placed in the named group. The sign identifier is unique within a group. The
73
  sign group allows Vim plugins to use unique signs without interfering with
74
  other plugins using signs.
75
 
 
78
  used by popup windows where 'cursorline' is set.
79
 
80
  *sign-priority*
81
+ Each placed sign is assigned a priority value. When multiple signs are placed
82
  on the same line, the attributes of the sign with the highest priority is used
83
+ independently of the sign group. The default priority for a sign is 10, this
84
  value can be changed for different signs by specifying a different value at
85
  definition time. The priority is assigned at the time of placing a sign.
86
 
 
213
  By default, the sign is placed in the global sign group.
214
 
215
  By default, the sign is assigned a default priority of 10,
216
+ unless specified otherwise by the sign definition. To assign
217
+ a different priority value, use "priority={prio}" to specify a
218
  value. The priority is used to determine the sign that is
219
  displayed when multiple signs are placed on the same line.
220
 
 
312
  all the files it appears in.
313
 
314
  :sig[n] unplace *
315
+ Remove all placed signs in the global group from all the
316
+ files.
317
 
318
  :sig[n] unplace * group={group}
319
  Remove all placed signs in group {group} from all the files.
 
322
  Remove all placed signs in all the groups from all the files.
323
 
324
  :sig[n] unplace
325
+ Remove a placed sign at the cursor position. If multiple
326
+ signs are placed in the line, then only one is removed.
327
 
328
  :sig[n] unplace group={group}
329
  Remove a placed sign in group {group} at the cursor
 
381
 
382
  :sig[n] jump {id} [buffer={nr}] *E934*
383
  Same, but use buffer {nr}. This fails if buffer {nr} does not
384
+ have a name. If the buffer argument is not given, use the
385
  current buffer.
386
 
387
  :sig[n] jump {id} group={group} [buffer={nr}]
 
449
  This is similar to the |:sign-list| command.
450
 
451
  If the {name} is not supplied, then a list of all the defined
452
+ signs is returned. Otherwise the attribute of the specified
453
  sign is returned.
454
 
455
  Each list item in the returned value is a dictionary with the
 
492
 
493
  If the optional buffer name {buf} is specified, then only the
494
  list of signs placed in that buffer is returned. For the use
495
+ of {buf}, see |bufname()|. The optional {dict} can contain
496
  the following entries:
497
  group select only signs in this group
498
  id select sign with this identifier
499
+ lnum select signs placed in this line. For the use
500
  of {lnum}, see |line()|.
501
  If {group} is '*', then signs in all the groups including the
502
+ global group are returned. If {group} is not supplied or is
503
+ an empty string, then only signs in the global group are
504
  returned. If no arguments are supplied, then signs in the
505
  global group placed in all the buffers are returned.
506
  See |sign-group|.
 
508
  Each list item in the returned value is a dictionary with the
509
  following entries:
510
  bufnr number of the buffer with the sign
511
+ signs list of signs placed in {bufnr}. Each list
512
  item is a dictionary with the below listed
513
  entries
514
 
515
  The dictionary for each sign contains the following entries:
516
+ group sign group. Set to '' for the global group.
517
  id identifier of the sign
518
  lnum line number where the sign is placed
519
  name name of the defined sign
 
560
  If {group} is an empty string, then the global group is used.
561
  For the use of {buf}, see |bufname()|.
562
 
563
+ Returns the line number of the sign. Returns -1 if the
564
  arguments are invalid.
565
 
566
  Example: >
 
580
  similar to the |:sign-place| command.
581
 
582
  If the sign identifier {id} is zero, then a new identifier is
583
+ allocated. Otherwise the specified number is used. {group}
584
+ is the sign group name. To use the global sign group, use an
585
  empty string. {group} functions as a namespace for {id}, thus
586
+ two groups can use the same IDs. Refer to |sign-identifier|
587
  and |sign-group| for more information.
588
 
589
  {name} refers to a defined sign.
590
+ {buf} refers to a buffer name or number. For the accepted
591
  values, see |bufname()|.
592
 
593
  The optional {dict} argument supports the following entries:
594
  lnum line number in the file or buffer
595
  {buf} where the sign is to be placed.
596
  For the accepted values, see |line()|.
597
+ priority priority of the sign. See
598
  |sign-priority| for more information.
599
 
600
  If the optional {dict} is not specified, then it modifies the
 
631
  sign_placelist({list}) *sign_placelist()*
632
  Place one or more signs. This is similar to the
633
  |sign_place()| function. The {list} argument specifies the
634
+ List of signs to place. Each list item is a dict with the
635
  following sign attributes:
636
+ buffer Buffer name or number. For the accepted
637
  values, see |bufname()|.
638
+ group Sign group. {group} functions as a namespace
639
  for {id}, thus two groups can use the same
640
+ IDs. If not specified or set to an empty
641
  string, then the global group is used. See
642
  |sign-group| for more information.
643
+ id Sign identifier. If not specified or zero,
644
  then a new unique identifier is allocated.
645
+ Otherwise the specified number is used. See
646
  |sign-identifier| for more information.
647
  lnum Line number in the buffer where the sign is to
648
+ be placed. For the accepted values, see
649
  |line()|.
650
+ name Name of the sign to place. See |sign_define()|
651
  for more information.
652
+ priority Priority of the sign. When multiple signs are
653
  placed on a line, the sign with the highest
654
+ priority is used. If not specified, the
655
  default value of 10 is used, unless specified
656
+ otherwise by the sign definition. See
657
  |sign-priority| for more information.
658
 
659
  If {id} refers to an existing sign, then the existing sign is
660
  modified to use the specified {name} and/or {priority}.
661
 
662
+ Returns a List of sign identifiers. If failed to place a
663
  sign, the corresponding list item is set to -1.
664
 
665
  Examples: >
 
695
 
696
  sign_undefine([{name}]) *sign_undefine()*
697
  sign_undefine({list})
698
+ Deletes a previously defined sign {name}. This is similar to
699
+ the |:sign-undefine| command. If {name} is not supplied, then
700
  deletes all the defined signs.
701
 
702
  The one argument {list} can be used to undefine a list of
703
+ signs. Each list item is the name of a sign.
704
 
705
  Returns 0 on success and -1 on failure. For the one argument
706
  {list} call, returns a list of values one for each undefined
 
726
  Remove a previously placed sign in one or more buffers. This
727
  is similar to the |:sign-unplace| command.
728
 
729
+ {group} is the sign group name. To use the global sign group,
730
  use an empty string. If {group} is set to '*', then all the
731
  groups including the global group are used.
732
  The signs in {group} are selected based on the entries in
733
  {dict}. The following optional entries in {dict} are
734
  supported:
735
+ buffer buffer name or number. See |bufname()|.
736
  id sign identifier
737
  If {dict} is not supplied, then all the signs in {group} are
738
  removed.
 
776
 
777
  The {list} argument specifies the List of signs to remove.
778
  Each list item is a dict with the following sign attributes:
779
+ buffer buffer name or number. For the accepted
780
+ values, see |bufname()|. If not specified,
781
  then the specified sign is removed from all
782
  the buffers.
783
+ group sign group name. If not specified or set to
784
+ an empty string, then the global sign group is
785
+ used. If set to '*', then all the groups
786
  including the global group are used.
787
+ id sign identifier. If not specified, then all
788
  the signs in the specified group are removed.
789
 
790
  Returns a List where an entry is set to 0 if the corresponding
runtime/doc/spell.txt CHANGED
@@ -140,7 +140,7 @@ zuG Undo |zW| and |zG|, remove the word from the internal
140
 
141
  There are no normal mode commands to mark words as
142
  rare as this is a fairly uncommon command and all
143
- intuitive commands for this are already taken. If you
144
  want you can add mappings with e.g.: >
145
  nnoremap z? :exe ':spellrare ' .. expand('<cWORD>')<CR>
146
  nnoremap z/ :exe ':spellrare! ' .. expand('<cWORD>')<CR>
@@ -300,7 +300,7 @@ In a table:
300
 
301
  *spell-cjk*
302
  Chinese, Japanese and other East Asian characters are normally marked as
303
- errors, because spell checking of these characters is not supported. If
304
  'spelllang' includes "cjk", these characters are not marked as errors. This
305
  is useful when editing text with spell checking while some Asian words are
306
  present.
@@ -507,8 +507,8 @@ Vim uses a binary file format for spelling. This greatly speeds up loading
507
  the word list and keeps it small.
508
  *.aff* *.dic* *Myspell*
509
  You can create a Vim spell file from the .aff and .dic files that Myspell
510
- uses. Myspell is used by OpenOffice.org and Mozilla. The OpenOffice .oxt
511
- files are zip files which contain the .aff and .dic files. You should be able
512
  to find them here:
513
  https://extensions.openoffice.org/en/search@f[0]=field_project_application%253A1&f[1]=field_project_tags%253A94.html
514
  The older, OpenOffice 2 files may be used if this doesn't work:
@@ -842,8 +842,8 @@ starting with an upper-case letter.
842
 
843
  When the word includes an upper-case letter, this means the upper-case letter
844
  is required at this position. The same word with a lower-case letter at this
845
- position will not match. When some of the other letters are upper-case it will
846
- not match either.
847
 
848
  The word with all upper-case characters will always be OK,
849
 
@@ -1182,9 +1182,10 @@ WORDS WITH A SLASH *spell-SLASH*
1182
 
1183
  The slash is used in the .dic file to separate the basic word from the affix
1184
  letters and other flags. Unfortunately, this means you cannot use a slash in
1185
- a word. Thus "TCP/IP" is not a word but "TCP" with the flags "IP". To include
1186
- a slash in the word put a backslash before it: "TCP\/IP". In the rare case
1187
- you want to use a backslash inside a word you need to use two backslashes.
 
1188
  Any other use of the backslash is reserved for future expansion.
1189
 
1190
 
@@ -1614,7 +1615,7 @@ CHECKCOMPOUNDTRIPLE (Hunspell) *spell-CHECKCOMPOUNDTRIPLE*
1614
 
1615
  CHECKSHARPS (Hunspell) *spell-CHECKSHARPS*
1616
  SS letter pair in uppercased (German) words may be upper case
1617
- sharp s (ß). Not supported.
1618
 
1619
  COMPLEXPREFIXES (Hunspell) *spell-COMPLEXPREFIXES*
1620
  Enables using two prefixes. Not supported.
 
140
 
141
  There are no normal mode commands to mark words as
142
  rare as this is a fairly uncommon command and all
143
+ intuitive commands for this are already taken. If you
144
  want you can add mappings with e.g.: >
145
  nnoremap z? :exe ':spellrare ' .. expand('<cWORD>')<CR>
146
  nnoremap z/ :exe ':spellrare! ' .. expand('<cWORD>')<CR>
 
300
 
301
  *spell-cjk*
302
  Chinese, Japanese and other East Asian characters are normally marked as
303
+ errors, because spell checking of these characters is not supported. If
304
  'spelllang' includes "cjk", these characters are not marked as errors. This
305
  is useful when editing text with spell checking while some Asian words are
306
  present.
 
507
  the word list and keeps it small.
508
  *.aff* *.dic* *Myspell*
509
  You can create a Vim spell file from the .aff and .dic files that Myspell
510
+ uses. Myspell is used by OpenOffice.org and Mozilla. The OpenOffice .oxt
511
+ files are zip files which contain the .aff and .dic files. You should be able
512
  to find them here:
513
  https://extensions.openoffice.org/en/search@f[0]=field_project_application%253A1&f[1]=field_project_tags%253A94.html
514
  The older, OpenOffice 2 files may be used if this doesn't work:
 
842
 
843
  When the word includes an upper-case letter, this means the upper-case letter
844
  is required at this position. The same word with a lower-case letter at this
845
+ position will not match. When some of the other letters are upper-case it
846
+ will not match either.
847
 
848
  The word with all upper-case characters will always be OK,
849
 
 
1182
 
1183
  The slash is used in the .dic file to separate the basic word from the affix
1184
  letters and other flags. Unfortunately, this means you cannot use a slash in
1185
+ a word. Thus "TCP/IP" is not a word but "TCP" with the flags "IP". To
1186
+ include a slash in the word put a backslash before it: "TCP\/IP". In the rare
1187
+ case you want to use a backslash inside a word you need to use two
1188
+ backslashes.
1189
  Any other use of the backslash is reserved for future expansion.
1190
 
1191
 
 
1615
 
1616
  CHECKSHARPS (Hunspell) *spell-CHECKSHARPS*
1617
  SS letter pair in uppercased (German) words may be upper case
1618
+ sharp s (ß). Not supported.
1619
 
1620
  COMPLEXPREFIXES (Hunspell) *spell-COMPLEXPREFIXES*
1621
  Enables using two prefixes. Not supported.
runtime/doc/sponsor.txt CHANGED
@@ -1,4 +1,4 @@
1
- *sponsor.txt* For Vim version 9.1. Last change: 2025 Aug 10
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
@@ -35,7 +35,7 @@ More explanations can be found in the |register-faq|.
35
  VOTE FOR FEATURES *vote-for-features*
36
 
37
  Note: Voting for features has been discontinued since the passing of |Bram| in
38
- 2023. The following two links still work, but they are no longer updated. So
39
  they now only provide a historic view as of summer 2023.
40
 
41
  The voting results appear on the results page, which is visible for everybody:
 
1
+ *sponsor.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
 
35
  VOTE FOR FEATURES *vote-for-features*
36
 
37
  Note: Voting for features has been discontinued since the passing of |Bram| in
38
+ 2023. The following two links still work, but they are no longer updated. So
39
  they now only provide a historic view as of summer 2023.
40
 
41
  The voting results appear on the results page, which is visible for everybody:
runtime/doc/starting.txt CHANGED
@@ -1,4 +1,4 @@
1
- *starting.txt* For Vim version 9.1. Last change: 2025 Aug 06
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
@@ -43,8 +43,8 @@ filename One or more file names. The first one will be the current
43
  To avoid a file name starting with a '-' being interpreted as
44
  an option, precede the arglist with "--", e.g.: >
45
  vim -- -filename
46
- < All arguments after the "--" will be interpreted as file names,
47
- no other options or "+command" argument can follow.
48
  For behavior of quotes on MS-Windows, see |win32-quotes|.
49
 
50
  *--*
@@ -174,7 +174,7 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
174
  "pat" in the first file being edited (see |pattern| for the
175
  available search patterns). The search starts at the cursor
176
  position, which can be the first line or the cursor position
177
- last used from |viminfo|. To force a search from the first
178
  line use "+1 +/pat".
179
 
180
  +{command} *-+c* *-c*
@@ -262,7 +262,7 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
262
  shell command, it has only been made difficult.
263
 
264
  *-g*
265
- -g Start Vim in GUI mode. See |gui|. For the opposite see |-v|.
266
 
267
  *-v*
268
  -v Start Ex in Vi mode. Only makes a difference when the
@@ -585,7 +585,7 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
585
  characters are appended. See also |complex-repeat|.
586
  {scriptout} cannot start with a digit.
587
  If you want to record what is typed in a human readable form,
588
- you can use |ch_logfile()|. It adds "raw key input" lines.
589
  Also see |--log|.
590
 
591
  *-W*
@@ -830,7 +830,7 @@ accordingly. Vim proceeds in this order:
830
  one that is found is read.
831
 
832
  RECOMMENDATION: Put all your Vim configuration stuff in the
833
- $HOME/.vim/ directory ($HOME/vimfiles/ for MS-Windows). That makes it
834
  easy to copy it to another system.
835
 
836
  If Vim was started with "-u filename", the file "filename" is used.
@@ -1089,7 +1089,7 @@ recommended to add these lines somewhere near the top: >
1089
  source $VIMRUNTIME/defaults.vim
1090
  Then Vim works like before you had a .vimrc.
1091
  Copying $VIMRUNTIME/vimrc_example.vim to your .vimrc is another way to do
1092
- this. Alternatively, you can copy defaults.vim to your .vimrc and modify it
1093
  (but then you won't get updates when it changes).
1094
 
1095
  If you don't like some of the defaults, you can still source defaults.vim and
@@ -1112,8 +1112,8 @@ The specification can be found online at
1112
  https://specifications.freedesktop.org/basedir-spec/latest/
1113
 
1114
  The location of this standard configuration directory is configurable by the
1115
- user, using an environment variable but should also give fallback in case those
1116
- variables weren't set.
1117
 
1118
  This is not an exhaustive list of those directories:
1119
  Environment var Default location Description ~
@@ -1129,7 +1129,7 @@ Vim will only use the `$XDG_CONFIG_HOME` directory, the others are not
1129
  Vim, on Unix systems, will look at `$XDG_CONFIG_HOME/vim/vimrc` for its
1130
  configuration (see |vimrc|) but it will source it only if no other
1131
  initialization file is found in `$HOME` or `$HOME/.vim` (thus making this
1132
- feature backward compatible). However, if you want to migrate to use
1133
  `$XDG_CONFIG_HOME/vim/` directory, you will have to move away your `~/.vimrc`
1134
  and `~/.vim/vimrc` file.
1135
 
@@ -1637,8 +1637,8 @@ has marks for.
1637
  *viminfo-file-marks*
1638
  Uppercase marks ('A to 'Z) are stored when writing the viminfo file. The
1639
  numbered marks ('0 to '9) are a bit special. When the viminfo file is written
1640
- (when exiting or with the ":wviminfo" command), '0 is set to the current cursor
1641
- position and file. The old '0 is moved to '1, '1 to '2, etc. This
1642
  resembles what happens with the "1 to "9 delete registers. If the current
1643
  cursor position is already present in '0 to '9, it is moved to '0, to avoid
1644
  having the same position twice. The result is that with "'0", you can jump
@@ -1738,8 +1738,8 @@ most of the information will be restored).
1738
  The information in the file is first read in to make
1739
  a merge between old and new info. When [!] is used,
1740
  the old information is not read first, only the
1741
- internal info is written. If 'viminfo' is empty, marks
1742
- for up to 100 files will be written.
1743
  When you get error "E929: Too many viminfo temp
1744
  files", check that no old temp files were left behind
1745
  (e.g. ~/.viminf*) and that you can write in the
 
1
+ *starting.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
 
43
  To avoid a file name starting with a '-' being interpreted as
44
  an option, precede the arglist with "--", e.g.: >
45
  vim -- -filename
46
+ < All arguments after the "--" will be interpreted as file
47
+ names, no other options or "+command" argument can follow.
48
  For behavior of quotes on MS-Windows, see |win32-quotes|.
49
 
50
  *--*
 
174
  "pat" in the first file being edited (see |pattern| for the
175
  available search patterns). The search starts at the cursor
176
  position, which can be the first line or the cursor position
177
+ last used from |viminfo|. To force a search from the first
178
  line use "+1 +/pat".
179
 
180
  +{command} *-+c* *-c*
 
262
  shell command, it has only been made difficult.
263
 
264
  *-g*
265
+ -g Start Vim in GUI mode. See |gui|. For the opposite see |-v|.
266
 
267
  *-v*
268
  -v Start Ex in Vi mode. Only makes a difference when the
 
585
  characters are appended. See also |complex-repeat|.
586
  {scriptout} cannot start with a digit.
587
  If you want to record what is typed in a human readable form,
588
+ you can use |ch_logfile()|. It adds "raw key input" lines.
589
  Also see |--log|.
590
 
591
  *-W*
 
830
  one that is found is read.
831
 
832
  RECOMMENDATION: Put all your Vim configuration stuff in the
833
+ $HOME/.vim/ directory ($HOME/vimfiles/ for MS-Windows). That makes it
834
  easy to copy it to another system.
835
 
836
  If Vim was started with "-u filename", the file "filename" is used.
 
1089
  source $VIMRUNTIME/defaults.vim
1090
  Then Vim works like before you had a .vimrc.
1091
  Copying $VIMRUNTIME/vimrc_example.vim to your .vimrc is another way to do
1092
+ this. Alternatively, you can copy defaults.vim to your .vimrc and modify it
1093
  (but then you won't get updates when it changes).
1094
 
1095
  If you don't like some of the defaults, you can still source defaults.vim and
 
1112
  https://specifications.freedesktop.org/basedir-spec/latest/
1113
 
1114
  The location of this standard configuration directory is configurable by the
1115
+ user, using an environment variable but should also give fallback in case
1116
+ those variables weren't set.
1117
 
1118
  This is not an exhaustive list of those directories:
1119
  Environment var Default location Description ~
 
1129
  Vim, on Unix systems, will look at `$XDG_CONFIG_HOME/vim/vimrc` for its
1130
  configuration (see |vimrc|) but it will source it only if no other
1131
  initialization file is found in `$HOME` or `$HOME/.vim` (thus making this
1132
+ feature backward compatible). However, if you want to migrate to use
1133
  `$XDG_CONFIG_HOME/vim/` directory, you will have to move away your `~/.vimrc`
1134
  and `~/.vim/vimrc` file.
1135
 
 
1637
  *viminfo-file-marks*
1638
  Uppercase marks ('A to 'Z) are stored when writing the viminfo file. The
1639
  numbered marks ('0 to '9) are a bit special. When the viminfo file is written
1640
+ (when exiting or with the ":wviminfo" command), '0 is set to the current
1641
+ cursor position and file. The old '0 is moved to '1, '1 to '2, etc. This
1642
  resembles what happens with the "1 to "9 delete registers. If the current
1643
  cursor position is already present in '0 to '9, it is moved to '0, to avoid
1644
  having the same position twice. The result is that with "'0", you can jump
 
1738
  The information in the file is first read in to make
1739
  a merge between old and new info. When [!] is used,
1740
  the old information is not read first, only the
1741
+ internal info is written. If 'viminfo' is empty,
1742
+ marks for up to 100 files will be written.
1743
  When you get error "E929: Too many viminfo temp
1744
  files", check that no old temp files were left behind
1745
  (e.g. ~/.viminf*) and that you can write in the
runtime/doc/syntax.txt CHANGED
@@ -380,12 +380,12 @@ Upon loading a file, Vim finds the relevant syntax file as follows:
380
  4. Conversion to HTML *2html.vim* *convert-to-HTML*
381
 
382
  2html is not a syntax file itself, but a script that converts the current
383
- window into HTML. Vim opens a new window in which it builds the HTML file.
384
 
385
- After you save the resulting file, you can view it with any browser. The
386
  colors should be exactly the same as you see them in Vim. With
387
  |g:html_line_ids| you can jump to specific lines by adding (for example) #L123
388
- or #123 to the end of the URL in your browser's address bar. And with
389
  |g:html_dynamic_folds| enabled, you can show or hide the text that is folded
390
  in Vim.
391
 
@@ -394,7 +394,7 @@ Source the script to convert the current file: >
394
 
395
  :runtime! syntax/2html.vim
396
  <
397
- Many variables affect the output of 2html.vim; see below. Any of the on/off
398
  options listed below can be enabled or disabled by setting them explicitly to
399
  the desired value, or restored to their default by removing the variable using
400
  |:unlet|.
@@ -421,17 +421,17 @@ and last line to be converted. Example, using the last set Visual area: >
421
  <
422
  *:TOhtml*
423
  :[range]TOhtml The ":TOhtml" command is defined in a standard plugin.
424
- This command will source |2html.vim| for you. When a
425
  range is given, this command sets |g:html_start_line|
426
  and |g:html_end_line| to the start and end of the
427
- range, respectively. Default range is the entire
428
  buffer.
429
 
430
  If the current window is part of a |diff|, unless
431
  |g:html_diff_one_file| is set, :TOhtml will convert
432
  all windows which are part of the diff in the current
433
  tab and place them side-by-side in a <table> element
434
- in the generated HTML. With |g:html_line_ids| you can
435
  jump to lines in specific windows with (for example)
436
  #W1L42 for line 42 in the first diffed window, or
437
  #W3L87 for line 87 in the third.
@@ -445,7 +445,7 @@ and last line to be converted. Example, using the last set Visual area: >
445
  *g:html_diff_one_file*
446
  Default: 0.
447
  When 0, and using |:TOhtml| all windows involved in a |diff| in the current tab
448
- page are converted to HTML and placed side-by-side in a <table> element. When
449
  1, only the current buffer is converted.
450
  Example: >
451
 
@@ -465,9 +465,9 @@ not set.
465
  Default: 0.
466
  When 0, display a progress bar in the statusline for each major step in the
467
  2html.vim conversion process.
468
- When 1, do not display the progress bar. This offers a minor speed improvement
469
- but you won't have any idea how much longer the conversion might take; for big
470
- files it can take a long time!
471
  Example: >
472
 
473
  let g:html_no_progress = 1
@@ -480,17 +480,17 @@ moves through the buffer, switches windows, and the like: >
480
  <
481
  Note that the -s flag prevents loading your .vimrc and any plugins, so you
482
  need to explicitly source/enable anything that will affect the HTML
483
- conversion. See |-E| and |-s-ex| for details. It is probably best to create a
484
  script to replace all the -c commands and use it with the -u flag instead of
485
  specifying each command separately.
486
 
487
  *hl-TOhtmlProgress* *TOhtml-progress-color*
488
  When displayed, the progress bar will show colored boxes along the statusline
489
- as the HTML conversion proceeds. By default, the background color as the
490
- current "DiffDelete" highlight group is used. If "DiffDelete" and "StatusLine"
491
  have the same background color, TOhtml will automatically adjust the color to
492
- differ. If you do not like the automatically selected colors, you can define
493
- your own highlight colors for the progress bar. Example: >
494
 
495
  hi TOhtmlProgress guifg=#c0ffee ctermbg=7
496
  <
@@ -509,11 +509,11 @@ Go back to the default to use 'number' by deleting the variable: >
509
  *g:html_line_ids*
510
  Default: 1 if |g:html_number_lines| is set, 0 otherwise.
511
  When 1, adds an HTML id attribute to each line number, or to an empty <span>
512
- inserted for that purpose if no line numbers are shown. This ID attribute
513
  takes the form of L123 for single-buffer HTML pages, or W2L123 for diff-view
514
  pages, and is used to jump to a specific line (in a specific window of a diff
515
- view). Javascript is inserted to open any closed dynamic folds
516
- (|g:html_dynamic_folds|) containing the specified line before jumping. The
517
  javascript also allows omitting the window ID in the url, and the leading L.
518
  For example: >
519
 
@@ -527,7 +527,7 @@ For example: >
527
  Default: 1.
528
  When 1, generate valid HTML 5 markup with CSS styling, supported in all modern
529
  browsers and many old browsers.
530
- When 0, generate <font> tags and similar outdated markup. This is not
531
  recommended but it may work better in really old browsers, email clients,
532
  forum posts, and similar situations where basic CSS support is unavailable.
533
  Example: >
@@ -549,10 +549,10 @@ included in the generated HTML (unless it is folded): >
549
  *g:html_ignore_folding*
550
  Default: 0.
551
  When 0, text in a closed fold is replaced by the text shown for the fold in
552
- Vim (|fold-foldtext|). See |g:html_dynamic_folds| if you also want to allow
553
  the user to expand the fold as in Vim to see the text inside.
554
  When 1, include all text from the buffer in the generated HTML; whether the
555
- text is in a fold has no impact at all. |g:html_dynamic_folds| has no effect.
556
 
557
  Either of these commands will ensure that all text in the buffer is included
558
  in the generated HTML (unless it is concealed): >
@@ -576,7 +576,7 @@ This variable is ignored when |g:html_ignore_folding| is set.
576
  Default: 0.
577
  When 0, if |g:html_dynamic_folds| is 1, generate a column of text similar to
578
  Vim's foldcolumn (|fold-foldcolumn|) the user can click on to toggle folds
579
- open or closed. The minimum width of the generated text column is the current
580
  'foldcolumn' setting.
581
  When 1, do not generate this column; instead, hovering the mouse cursor over
582
  folded text will open the fold as if |g:html_hover_unfold| were set.
@@ -586,10 +586,10 @@ folded text will open the fold as if |g:html_hover_unfold| were set.
586
  *TOhtml-uncopyable-text* *g:html_prevent_copy*
587
  Default: Empty string.
588
  This option prevents certain regions of the generated HTML from being copied,
589
- when you select all text in document rendered in a browser and copy it. Useful
590
- for allowing users to copy-paste only the source text even if a fold column or
591
- line numbers are shown in the generated content. Specify regions to be
592
- affected in this way as follows:
593
  f: fold column
594
  n: line numbers (also within fold text)
595
  t: fold text
@@ -606,9 +606,9 @@ Default: "none"
606
  If |g:html_prevent_copy| is non-empty, then:
607
 
608
  When "all", read-only <input> elements are used in place of normal text for
609
- uncopyable regions. In some browsers, especially older browsers, after
610
  selecting an entire page and copying the selection, the <input> tags are not
611
- pasted with the page text. If |g:html_no_invalid| is 0, the <input> tags have
612
  invalid type; this works in more browsers, but the page will not validate.
613
  Note: This method does NOT work in recent versions of Chrome and equivalent
614
  browsers; the <input> tags get pasted with the text.
@@ -616,23 +616,23 @@ browsers; the <input> tags get pasted with the text.
616
  When "fallback" (default value), the same <input> elements are generated for
617
  older browsers, but newer browsers (detected by CSS feature query) hide the
618
  <input> elements and instead use generated content in an ::before pseudoelement
619
- to display the uncopyable text. This method should work with the largest
620
  number of browsers, both old and new.
621
 
622
- When "none", the <input> elements are not generated at all. Only the
623
- generated-content method is used. This means that old browsers, notably
624
  Internet Explorer, will either copy the text intended not to be copyable, or
625
- the non-copyable text may not appear at all. However, this is the most
626
  standards-based method, and there will be much less markup.
627
 
628
  *g:html_no_invalid*
629
  Default: 0.
630
  When 0, if |g:html_prevent_copy| is non-empty and |g:html_use_input_for_pc| is
631
  not "none", an invalid attribute is intentionally inserted into the <input>
632
- element for the uncopyable areas. This prevents pasting the <input> elements
633
- in some applications. Specifically, some versions of Microsoft Word will not
634
- paste the <input> elements if they contain this invalid attribute. When 1, no
635
- invalid markup is inserted, and the generated page should validate. However,
636
  <input> elements may be pasted into some applications and can be difficult to
637
  remove afterward.
638
 
@@ -641,7 +641,7 @@ Default: 0.
641
  When 0, the only way to open a fold generated by 2html.vim with
642
  |g:html_dynamic_folds| set, is to click on the generated fold column.
643
  When 1, use CSS 2.0 to allow the user to open a fold by moving the mouse
644
- cursor over the displayed fold text. This is useful to allow users with
645
  disabled javascript to view the folded text.
646
 
647
  Note that old browsers (notably Internet Explorer 6) will not support this
@@ -654,11 +654,11 @@ they will not be openable without a foldcolumn.
654
  *g:html_id_expr*
655
  Default: ""
656
  Dynamic folding and jumping to line IDs rely on unique IDs within the document
657
- to work. If generated HTML is copied into a larger document, these IDs are no
658
- longer guaranteed to be unique. Set g:html_id_expr to an expression Vim can
659
  evaluate to get a unique string to append to each ID used in a given document,
660
  so that the full IDs will be unique even when combined with other content in a
661
- larger HTML document. Example, to append _ and the buffer number to each ID: >
662
 
663
  :let g:html_id_expr = '"_" .. bufnr("%")'
664
  <
@@ -687,11 +687,11 @@ Go back to default, determine wrapping from 'wrap' setting: >
687
  *g:html_no_pre*
688
  Default: 0.
689
  When 0, buffer text in the generated HTML is surrounded by <pre>...</pre>
690
- tags. Series of whitespace is shown as in Vim without special markup, and tab
691
  characters can be included literally (see |g:html_expand_tabs|).
692
  When 1 (not recommended), the <pre> tags are omitted, and a plain <div> is
693
- used instead. Whitespace is replaced by a series of &nbsp; character
694
- references, and <br> is used to end each line. This is another way to allow
695
  text in the generated HTML is wrap (see |g:html_pre_wrap|) which also works in
696
  old browsers, but may cause noticeable differences between Vim's display and
697
  the rendered page generated by 2html.vim.
@@ -701,8 +701,8 @@ the rendered page generated by 2html.vim.
701
  *g:html_no_doc*
702
  Default: 0.
703
  When 1 it doesn't generate a full HTML document with a DOCTYPE, <head>,
704
- <body>, etc. If |g:html_use_css| is enabled (the default) you'll have to
705
- define the CSS manually. The |g:html_dynamic_folds| and |g:html_line_ids|
706
  settings (off by default) also insert some JavaScript.
707
 
708
 
@@ -721,9 +721,9 @@ Default: 0 if 'tabstop' is 8, 'expandtab' is 0, 'vartabstop' is not in use,
721
  When 1, <Tab> characters in the buffer text are replaced with an appropriate
722
  number of space characters, or &nbsp; references if |g:html_no_pre| is 1.
723
  When 0, if |g:html_no_pre| is 0 or unset, <Tab> characters in the buffer text
724
- are included as-is in the generated HTML. This is useful for when you want to
725
  allow copy and paste from a browser without losing the actual whitespace in
726
- the source document. Note that this can easily break text alignment and
727
  indentation in the HTML, unless set by default.
728
 
729
  Force |2html.vim| to keep <Tab> characters: >
@@ -738,14 +738,15 @@ It is highly recommended to set your desired encoding with
738
 
739
  If you do not specify an encoding, |2html.vim| uses the preferred IANA name
740
  for the current value of 'fileencoding' if set, or 'encoding' if not.
741
- 'encoding' is always used for certain 'buftype' values. 'fileencoding' will be
742
- set to match the chosen document encoding.
743
 
744
  Automatic detection works for the encodings mentioned specifically by name in
745
  |encoding-names|, but TOhtml will only automatically use those encodings with
746
- wide browser support. However, you can override this to support specific
747
  encodings that may not be automatically detected by default (see options
748
- below). See http://www.iana.org/assignments/character-sets for the IANA names.
 
749
 
750
  Note: By default all Unicode encodings are converted to UTF-8 with no BOM in
751
  the generated HTML, as recommended by W3C:
@@ -756,7 +757,7 @@ the generated HTML, as recommended by W3C:
756
  *g:html_use_encoding*
757
  Default: none, uses IANA name for current 'fileencoding' as above.
758
  To overrule all automatic charset detection, set g:html_use_encoding to the
759
- name of the charset to be used. It is recommended to set this variable to
760
  something widely supported, like UTF-8, for anything you will be hosting on a
761
  webserver: >
762
  :let g:html_use_encoding = "UTF-8"
@@ -785,10 +786,10 @@ Default: none, autoload/tohtml.vim contains default conversions for encodings
785
  mentioned by name at |encoding-names| and which have wide
786
  browser support.
787
  This option allows |2html.vim| to detect the HTML charset for any
788
- 'fileencoding' or 'encoding' which is not detected automatically. You can also
789
- use it to override specific existing encoding-charset pairs. For example,
790
- TOhtml will by default use UTF-8 for all Unicode/UCS encodings. To use UTF-16
791
- and UTF-32 instead, use: >
792
  :let g:html_charset_override = {'ucs-4': 'UTF-32', 'utf-16': 'UTF-16'}
793
 
794
  Note that documents encoded in either UTF-32 or UTF-16 have known
@@ -797,12 +798,12 @@ compatibility problems with some major browsers.
797
  *g:html_font*
798
  Default: "monospace"
799
  You can specify the font or fonts used in the converted document using
800
- g:html_font. If this option is set to a string, then the value will be
801
- surrounded with single quotes. If this option is set to a list then each list
802
- item is surrounded by single quotes and the list is joined with commas. Either
803
- way, "monospace" is added as the fallback generic family name and the entire
804
- result used as the font family (using CSS) or font face (if not using CSS).
805
- Examples: >
806
 
807
  " font-family: 'Consolas', monospace;
808
  :let g:html_font = "Consolas"
@@ -876,9 +877,9 @@ version 2.2.3.
876
  ASSEMBLY *ft-asm-syntax* *ft-asmh8300-syntax* *ft-nasm-syntax*
877
  *ft-masm-syntax* *ft-asm68k-syntax* *fasm.vim*
878
 
879
- Files matching "*.i" could be Progress or Assembly. If the automatic detection
880
- doesn't work for you, or you don't edit Progress at all, use this in your
881
- startup vimrc: >
882
  :let filetype_i = "asm"
883
  Replace "asm" with the type of assembly you use.
884
 
@@ -893,7 +894,7 @@ files are included:
893
  ia64 Intel Itanium 64
894
  fasm Flat assembly (http://flatassembler.net)
895
  masm Microsoft assembly (.masm files are compiled with
896
- Microsoft's Macro Assembler. This is only supported
897
  for x86, x86_64, ARM and AARCH64 CPU families)
898
  nasm Netwide assembly
899
  tasm Turbo Assembly (with opcodes 80x86 up to Pentium, and
@@ -965,7 +966,7 @@ For Visual Basic use: >
965
 
966
  ASYMPTOTE *asy.vim* *ft-asy-syntax*
967
 
968
- By default, only basic Asymptote keywords are highlighted. To highlight
969
  extended geometry keywords: >
970
 
971
  :let g:asy_syn_plain = 1
@@ -974,7 +975,7 @@ and for highlighting keywords related to 3D constructions: >
974
 
975
  :let g:asy_syn_three = 1
976
 
977
- By default, Asymptote-defined colors (e.g: lightblue) are highlighted. To
978
  highlight TeX-defined colors (e.g: BlueViolet) use: >
979
 
980
  :let g:asy_syn_texcolors = 1
@@ -986,8 +987,8 @@ or for Xorg colors (e.g: AliceBlue): >
986
  BAAN *baan.vim* *baan-syntax*
987
 
988
  The baan.vim gives syntax support for BaanC of release BaanIV up to SSA ERP LN
989
- for both 3 GL and 4 GL programming. Large number of standard defines/constants
990
- are supported.
991
 
992
  Some special violation of coding standards will be signalled when one specify
993
  in ones |.vimrc|: >
@@ -996,7 +997,7 @@ in ones |.vimrc|: >
996
  *baan-folding*
997
 
998
  Syntax folding can be enabled at various levels through the variables
999
- mentioned below (Set those in your |.vimrc|). The more complex folding on
1000
  source blocks and SQL can be CPU intensive.
1001
 
1002
  To allow any folding and enable folding at function level use: >
@@ -1009,9 +1010,9 @@ Folding can be enabled for embedded SQL blocks as SELECT, SELECTDO,
1009
  SELECTEMPTY, ... The indentation preceding the begin/end keywords has to
1010
  match (spaces are not considered equal to a tab). >
1011
  let baan_fold_sql=1
1012
- Note: Block folding can result in many small folds. It is suggested to |:set|
1013
  the options 'foldminlines' and 'foldnestmax' in |.vimrc| or use |:setlocal| in
1014
- .../after/syntax/baan.vim (see |after-directory|). Eg: >
1015
  set foldminlines=5
1016
  set foldnestmax=6
1017
 
@@ -1062,7 +1063,7 @@ Variable Highlight ~
1062
  *c_syntax_for_h* use C syntax for *.h files instead of C++/ObjC/ObjC++
1063
  (NOTE: This variable is deprecated and no longer
1064
  necessary, as *.h files now default to C, unless the
1065
- file contains C++ or Objective-C syntax. If the
1066
  automated detection fails, the default filetype can
1067
  be adjusted using `g:filetype_h`.)
1068
  *c_no_if0* don't highlight "#if 0" blocks as comments
@@ -1273,7 +1274,7 @@ variable.
1273
  CSV *ft-csv-syntax*
1274
 
1275
  If you change the delimiter of a CSV file, its syntax highlighting will no
1276
- longer match the changed file content. You will need to unlet the following
1277
  variable: >
1278
 
1279
  :unlet b:csv_delimiter
@@ -1289,10 +1290,10 @@ Now the syntax engine should determine the newly changed CSV delimiter.
1289
  CYNLIB *cynlib.vim* *ft-cynlib-syntax*
1290
 
1291
  Cynlib files are C++ files that use the Cynlib class library to enable
1292
- hardware modelling and simulation using C++. Typically Cynlib files have a .cc
1293
- or a .cpp extension, which makes it very difficult to distinguish them from a
1294
- normal C++ file. Thus, to enable Cynlib highlighting for .cc files, add this
1295
- line to your .vimrc file: >
1296
 
1297
  :let cynlib_cyntax_for_cc=1
1298
 
@@ -1332,9 +1333,9 @@ following variables:
1332
  DART *dart.vim* *ft-dart-syntax*
1333
 
1334
  Dart is an object-oriented, typed, class defined, garbage collected language
1335
- used for developing mobile, desktop, web, and back-end applications. Dart uses
1336
- a C-like syntax derived from C, Java, and JavaScript, with features adopted
1337
- from Smalltalk, Python, Ruby, and others.
1338
 
1339
  More information about the language and its development environment at the
1340
  official Dart language website at https://dart.dev
@@ -1450,7 +1451,7 @@ Doxygen generates code documentation using a special documentation format
1450
  (similar to Javadoc). This syntax script adds doxygen highlighting to c, cpp,
1451
  idl and php files, and should also work with java.
1452
 
1453
- There are a few of ways to turn on doxygen formatting. It can be done
1454
  explicitly or in a modeline by appending '.doxygen' to the syntax of the file.
1455
  Example: >
1456
  :set syntax=c.doxygen
@@ -1558,7 +1559,7 @@ to your startup file.
1558
 
1559
  EUPHORIA *euphoria3.vim* *euphoria4.vim* *ft-euphoria-syntax*
1560
 
1561
- Two syntax highlighting files exist for Euphoria. One for Euphoria
1562
  version 3.1.1, which is the default syntax highlighting file, and one for
1563
  Euphoria version 4.0.5 or later.
1564
 
@@ -1584,7 +1585,7 @@ add the following line to your startup file: >
1584
  Elixir and Euphoria share the *.ex file extension. If the filetype is
1585
  specifically set as Euphoria with the g:filetype_euphoria variable, or the
1586
  file is determined to be Euphoria based on keywords in the file, then the
1587
- filetype will be set as Euphoria. Otherwise, the filetype will default to
1588
  Elixir.
1589
 
1590
 
@@ -1644,10 +1645,10 @@ The following file extensions are auto-detected as Elixir file types:
1644
 
1645
  *.ex, *.exs, *.eex, *.leex, *.lock
1646
 
1647
- Elixir and Euphoria share the *.ex file extension. If the filetype is
1648
  specifically set as Euphoria with the g:filetype_euphoria variable, or the
1649
  file is determined to be Euphoria based on keywords in the file, then the
1650
- filetype will be set as Euphoria. Otherwise, the filetype will default to
1651
  Elixir.
1652
 
1653
 
@@ -1659,12 +1660,12 @@ NOTE: This site currently doesn't work, on Wikipedia is mentioned that
1659
  development stopped in 2009.
1660
 
1661
  Syntax highlighting is available for the most common elements of FlexWiki
1662
- syntax. The associated ftplugin script sets some buffer-local options to make
1663
- editing FlexWiki pages more convenient. FlexWiki considers a newline as the
1664
  start of a new paragraph, so the ftplugin sets 'tw'=0 (unlimited line length),
1665
  'wrap' (wrap long lines instead of using horizontal scrolling), 'linebreak'
1666
  (to wrap at a character in 'breakat' instead of at the last char on screen),
1667
- and so on. It also includes some keymaps that are disabled by default.
1668
 
1669
  If you want to enable the keymaps that make "j" and "k" and the cursor keys
1670
  move up and down by display lines, add this to your .vimrc: >
@@ -1725,7 +1726,7 @@ edit F# or Fortran at all, use this in your startup vimrc: >
1725
  FORTRAN *fortran.vim* *ft-fortran-syntax*
1726
 
1727
  Default highlighting and dialect ~
1728
- Vim highlights according to Fortran 2023 (the most recent standard). This
1729
  choice should be appropriate for most users most of the time because Fortran
1730
  2023 is almost a superset of previous versions (Fortran 2018, 2008, 2003, 95,
1731
  90, 77, and 66). A few legacy constructs deleted or declared obsolescent,
@@ -1750,21 +1751,21 @@ in your .vimrc prior to the :syntax on command.
1750
 
1751
  If the form of the source code depends, in a non-standard way, upon the file
1752
  extension, then it is most convenient to set fortran_free_source in a ftplugin
1753
- file. For more information on ftplugin files, see |ftplugin|. Note that this
1754
  will work only if the "filetype plugin indent on" command precedes the "syntax
1755
  on" command in your .vimrc file.
1756
 
1757
  When you edit an existing Fortran file, the syntax script will assume free
1758
  source form if the fortran_free_source variable has been set, and assumes
1759
  fixed source form if the fortran_fixed_source variable has been set. Suppose
1760
- neither of these variables have been set. In that case, the syntax script
1761
  attempts to determine which source form has been used by examining the file
1762
  extension using conventions common to the ifort, gfortran, Cray, NAG, and
1763
  PathScale compilers (.f, .for, .f77 for fixed-source, .f90, .f95, .f03, .f08
1764
  for free-source). No default is used for the .fpp and .ftn file extensions
1765
- because different compilers treat them differently. If none of this works,
1766
  then the script examines the first five columns of the first 500 lines of your
1767
- file. If no signs of free source form are detected, then the file is assumed
1768
  to be in fixed source form. The algorithm should work in the vast majority of
1769
  cases. In some cases, such as a file that begins with 500 or more full-line
1770
  comments, the script may incorrectly decide that the code is in fixed form.
@@ -1809,8 +1810,8 @@ fortran_fold in your .vimrc with a command such as >
1809
  to instruct the syntax script to define fold regions for program units, that
1810
  is main programs starting with a program statement, subroutines, function
1811
  subprograms, modules, submodules, blocks of comment lines, and block data
1812
- units. Block, interface, associate, critical, type definition, and change team
1813
- constructs will also be folded. If you also set the variable
1814
  fortran_fold_conditionals with a command such as >
1815
  :let fortran_fold_conditionals=1
1816
  then fold regions will also be defined for do loops, if blocks, select case,
@@ -2291,7 +2292,7 @@ JSON *json.vim* *ft-json-syntax* *g:vim_json_conceal*
2291
  *g:vim_json_warnings*
2292
 
2293
  The json syntax file provides syntax highlighting with conceal support by
2294
- default. To disable concealment: >
2295
  let g:vim_json_conceal = 0
2296
 
2297
  To disable syntax highlighting of errors: >
@@ -2447,7 +2448,7 @@ instead, and the name of your source file should be *.pike
2447
 
2448
  LUA *lua.vim* *ft-lua-syntax*
2449
 
2450
- The Lua syntax file can be used for versions 4.0, 5.0+. You can select one of
2451
  these versions using the global variables |g:lua_version| and
2452
  |g:lua_subversion|.
2453
 
@@ -2455,9 +2456,9 @@ these versions using the global variables |g:lua_version| and
2455
  MAIL *mail.vim* *ft-mail.vim*
2456
 
2457
  Vim highlights all the standard elements of an email (headers, signatures,
2458
- quoted text and URLs / email addresses). In keeping with standard conventions,
2459
- signatures begin in a line containing only "--" followed optionally by
2460
- whitespaces and end with a newline.
2461
 
2462
  Vim treats lines beginning with ']', '}', '|', '>' or a word followed by '>'
2463
  as quoted text. However Vim highlights headers and signatures in quoted text
@@ -2498,8 +2499,9 @@ MAPLE *maple.vim* *ft-maple-syntax*
2498
 
2499
  Maple V, by Waterloo Maple Inc, supports symbolic algebra. The language
2500
  supports many packages of functions which are selectively loaded by the user.
2501
- The standard set of packages' functions as supplied in Maple V release 4 may be
2502
- highlighted at the user's discretion. Users may place in their .vimrc file: >
 
2503
 
2504
  :let mvpkg_all= 1
2505
 
@@ -2553,13 +2555,13 @@ have the following in your .vimrc: >
2553
  MBSYNC *mbsync.vim* *ft-mbsync-syntax*
2554
 
2555
  The mbsync application uses a configuration file to setup mailboxes names,
2556
- user and password. All files ending with `.mbsyncrc` or with the name
2557
  `isyncrc` will be recognized as mbsync configuration files.
2558
 
2559
  MEDIAWIKI *ft-mediawiki-syntax*
2560
 
2561
  By default, syntax highlighting includes basic HTML tags like style and
2562
- headers |html.vim|. For strict Mediawiki syntax highlighting: >
2563
 
2564
  let g:html_no_rendering = 1
2565
 
@@ -2587,7 +2589,7 @@ The syntax for a dialect tag comment is: >
2587
  m2pim = 'm2pim', m2iso = 'm2iso', m2r10 = 'm2r10'
2588
 
2589
  A dialect tag comment is recognised by Vim if it occurs within the first 200
2590
- lines of the source file. Only the very first such comment is recognised, any
2591
  additional dialect tag comments are ignored.
2592
 
2593
  Example: >
@@ -2792,7 +2794,7 @@ To do so, set the *g:filetype_md* var: >
2792
 
2793
  :let g:filetype_md = 'pandoc'
2794
 
2795
- The pandoc syntax plugin uses |conceal| for pretty highlighting. Default is 1 >
2796
 
2797
  :let g:pandoc#syntax#conceal#use = 1
2798
 
@@ -2821,8 +2823,8 @@ This is a list of the rules which can be used here:
2821
  - inlinecode
2822
  - inlinemath
2823
 
2824
- You can customize the way concealing works. For example, if you prefer to mark
2825
- footnotes with the `*` symbol: >
2826
 
2827
  :let g:pandoc#syntax#conceal#cchar_overrides = {"footnote" : "*"}
2828
 
@@ -2842,8 +2844,8 @@ specified. Default = 1 >
2842
  :let g:pandoc#syntax#codeblocks#embeds#use = 1
2843
 
2844
  For specify what languages and using what syntax files to highlight embeds.
2845
- This is a list of language names. When the language pandoc and vim use don't
2846
- match, you can use the "PANDOC=VIM" syntax. For example: >
2847
 
2848
  :let g:pandoc#syntax#codeblocks#embeds#langs = ["ruby", "bash=sh"]
2849
 
@@ -2858,8 +2860,8 @@ To add underline subscript, superscript and strikeout text styles. Default = 1 >
2858
 
2859
  :let g:pandoc#syntax#style#underline_special = 1
2860
 
2861
- Detect and highlight definition lists. Disabling this can improve performance.
2862
- Default = 1 (i.e., enabled by default) >
2863
 
2864
  :let g:pandoc#syntax#style#use_definition_lists = 1
2865
 
@@ -2867,7 +2869,7 @@ The pandoc syntax script also comes with the following commands: >
2867
 
2868
  :PandocHighlight LANG
2869
 
2870
- Enables embedded highlighting for language LANG in codeblocks. Uses the
2871
  syntax for items in g:pandoc#syntax#codeblocks#embeds#langs. >
2872
 
2873
  :PandocUnhighlight LANG
@@ -3280,7 +3282,7 @@ commands than are actually available to you by the game.
3280
  R *r.vim* *ft-r-syntax*
3281
 
3282
  The parsing of R code for syntax highlight starts 40 lines backwards, but you
3283
- can set a different value in your |vimrc|. Example: >
3284
  let r_syntax_minlines = 60
3285
 
3286
  You can also turn off syntax highlighting of ROxygen: >
@@ -3306,9 +3308,9 @@ To highlight R code in knitr chunk headers: >
3306
  let rmd_syn_hl_chunk = 1
3307
 
3308
  By default, chunks of R code will be highlighted following the rules of R
3309
- language. Moreover, whenever the buffer is saved, Vim scans the buffer and
3310
- highlights other languages if they are present in new chunks. LaTeX code also
3311
- is automatically recognized and highlighted when the buffer is saved. This
3312
  behavior can be controlled with the variables `rmd_dynamic_fenced_languages`,
3313
  and `rmd_include_latex` whose valid values are: >
3314
  let rmd_dynamic_fenced_languages = 0 " No autodetection of languages
@@ -3331,10 +3333,10 @@ To highlight R code in knitr chunk headers, add to your |vimrc|: >
3331
 
3332
  RASI *rasi.vim* *ft-rasi-syntax*
3333
 
3334
- Rasi stands for Rofi Advanced Style Information. It is used by the program
3335
- rofi to style the rendering of the search window. The language is heavily
3336
- inspired by CSS stylesheet. Files with the following extensions are recognized
3337
- as rasi files: .rasi.
3338
 
3339
  READLINE *readline.vim* *ft-readline-syntax*
3340
 
@@ -3686,7 +3688,7 @@ the following line in your .vimrc: >
3686
  Sh: EMBEDDING LANGUAGES~
3687
 
3688
  You may wish to embed languages into sh. I'll give an example courtesy of
3689
- Lorance Stinson on how to do this with awk as an example. Put the following
3690
  file into $HOME/.vim/after/syntax/sh/awkembed.vim: >
3691
 
3692
  " AWK Embedding:
@@ -3783,7 +3785,7 @@ to a larger number: >
3783
 
3784
  This will make the syntax synchronization start 1000 lines before the first
3785
  displayed line. If you set "tcsh_minlines" to "fromstart", then
3786
- synchronization is done from the start of the file. The default value for
3787
  tcsh_minlines is 100. The disadvantage of using a larger number is that
3788
  redrawing can become slow.
3789
 
@@ -3992,7 +3994,7 @@ substitution will not be made.
3992
  *g:tex_isk* *g:tex_stylish*
3993
  Tex: Controlling iskeyword~
3994
 
3995
- Normally, LaTeX keywords support 0-9, a-z, A-z, and 192-255 only. Latex
3996
  keywords don't support the underscore - except when in *.sty files. The
3997
  syntax highlighting script handles this with the following logic:
3998
 
@@ -4045,7 +4047,8 @@ syntax highlighting script handles this with the following logic:
4045
  < If you don't want matching to occur inside bold and italicized
4046
  regions, >
4047
  let g:tex_excludematcher= 1
4048
- < will prevent the texMatcher group from being included in those regions.
 
4049
 
4050
  TF *tf.vim* *ft-tf-syntax*
4051
 
@@ -4063,7 +4066,7 @@ There is one option to control the TypeScript syntax highlighting.
4063
 
4064
  *g:typescript_host_keyword*
4065
  When this variable is set to 1, host-specific APIs such as `addEventListener`
4066
- are highlighted. To disable set it to zero in your .vimrc: >
4067
 
4068
  let g:typescript_host_keyword = 0
4069
  <
@@ -4073,8 +4076,8 @@ TYPST *ft-typst-syntax*
4073
 
4074
  *g:typst_embedded_languages*
4075
  Typst files can embed syntax highlighting for other languages by setting the
4076
- |g:typst_embedded_languages| variable. This variable is a list of language
4077
- names whose syntax definitions will be included in Typst files. Example: >
4078
 
4079
  let g:typst_embedded_languages = ['python', 'r']
4080
 
@@ -4167,8 +4170,8 @@ using Neovim), set >
4167
 
4168
  WDL *wdl.vim* *wdl-syntax*
4169
 
4170
- The Workflow Description Language is a way to specify data processing workflows
4171
- with a human-readable and writeable syntax. This is used a lot in
4172
  bioinformatics. More info on the spec can be found here:
4173
  https://github.com/openwdl/wdl
4174
 
@@ -4236,11 +4239,11 @@ YAML *yaml.vim* *ft-yaml-syntax*
4236
 
4237
  *g:yaml_schema* *b:yaml_schema*
4238
  A YAML schema is a combination of a set of tags and a mechanism for resolving
4239
- non-specific tags. For user this means that YAML parser may, depending on
4240
  plain scalar contents, treat plain scalar (which can actually be only string
4241
  and nothing else) as a value of the other type: null, boolean, floating-point,
4242
- integer. `g:yaml_schema` option determines according to which schema values
4243
- will be highlighted specially. Supported schemas are
4244
 
4245
  Schema Description ~
4246
  failsafe No additional highlighting.
@@ -4690,7 +4693,7 @@ concealends *:syn-concealends*
4690
  When the "concealends" argument is given, the start and end matches of
4691
  the region, but not the contents of the region, are marked as concealable.
4692
  Whether or not they are actually concealed depends on the setting on the
4693
- 'conceallevel' option. The ends of a region can only be concealed separately
4694
  in this way when they have their own highlighting via "matchgroup". The
4695
  |synconcealed()| function can be used to retrieve information about conealed
4696
  items.
@@ -4974,7 +4977,7 @@ IMPLICIT CONCEAL *:syn-conceal-implicit*
4974
 
4975
  :sy[ntax] conceal [on|off]
4976
  This defines if the following ":syntax" commands will define keywords,
4977
- matches or regions with the "conceal" flag set. After ":syn conceal
4978
  on", all subsequent ":syn keyword", ":syn match" or ":syn region"
4979
  defined will have the "conceal" flag set implicitly. ":syn conceal
4980
  off" returns to the normal state where the "conceal" flag must be
@@ -5476,8 +5479,9 @@ of colors by using the `:colorscheme` command, for example: >
5476
  < In case g:colors_name has not been defined :colo will
5477
  output "default". Its palette is defined in the file
5478
  "$VIMRUNTIME/syntax/syncolor.vim" and is based on
5479
- legacy versions of peachpuff and desert. When compiled
5480
- without the |+eval| feature it will output "unknown".
 
5481
 
5482
  :colo[rscheme] {name} Load color scheme {name}. This searches 'runtimepath'
5483
  for the file "colors/{name}.vim". The first one that
@@ -5575,7 +5579,7 @@ in their own color.
5575
 
5576
  :hi[ghlight] [default] {group-name} {key}={arg} ...
5577
  Add a highlight group, or change the highlighting for
5578
- an existing group. If a given color name is not
5579
  recognized, each `colors/lists/default.vim` found on
5580
  'runtimepath' will be loaded.
5581
  See |highlight-args| for the {key}={arg} arguments.
@@ -5610,7 +5614,7 @@ also tell where it was last set. Example: >
5610
  Last set from /home/mool/vim/vim7/runtime/syntax/syncolor.vim ~
5611
 
5612
  When ":hi clear" is used then the script where this command is used will be
5613
- mentioned for the default values. See |:verbose-cmd| for more information.
5614
 
5615
  *highlight-args* *E416* *E417* *E423*
5616
  There are three types of terminals for highlighting:
@@ -5811,9 +5815,9 @@ ctermul={color-nr} *highlight-ctermul*
5811
  "fg" and "bg" colors will not be adjusted.
5812
 
5813
  ctermfont={font-nr} *highlight-ctermfont*
5814
- This gives the alternative font number to use in the terminal. The
5815
  available fonts depend on the terminal, and if the terminal is not set
5816
- up for alternative fonts this simply won't do anything. The range of
5817
  {font-nr} is 0-10 where 0 resets the font to the default font, 1-9
5818
  selects one of the 9 alternate fonts, and 10 selects the Fraktur font.
5819
  For more information see your terminal's handling of SGR parameters
@@ -5907,10 +5911,10 @@ guisp={color-name} *highlight-guisp*
5907
  colorscheme alt
5908
  <
5909
  If you want to develop a color list that can be relied on by others,
5910
- it is best to prefix your color names. By convention these color lists
5911
- are placed in the colors/lists directory. You can see an example in
5912
- '$VIMRUNTIME/colors/lists/csscolors.vim'. This list would be sourced
5913
- by a color scheme using: >
5914
 
5915
  :runtime colors/lists/csscolors.vim
5916
  :highlight Comment guifg=css_turquoise
@@ -5936,7 +5940,8 @@ lCursor Character under the cursor when |language-mapping|
5936
  *hl-CursorIM*
5937
  CursorIM Like Cursor, but used when in IME mode. |CursorIM|
5938
  *hl-CursorColumn*
5939
- CursorColumn Screen column that the cursor is in when 'cursorcolumn' is set.
 
5940
  *hl-CursorLine*
5941
  CursorLine Screen line that the cursor is in when 'cursorline' is set.
5942
  *hl-Directory*
@@ -6022,10 +6027,10 @@ PmenuSbar Popup menu: Scrollbar.
6022
  *hl-PmenuThumb*
6023
  PmenuThumb Popup menu: Thumb of the scrollbar.
6024
  *hl-PmenuMatch*
6025
- PmenuMatch Popup menu: Matched text in normal item. Applied in
6026
  combination with |hl-Pmenu|.
6027
  *hl-PmenuMatchSel*
6028
- PmenuMatchSel Popup menu: Matched text in selected item. Applied in
6029
  combination with |hl-PmenuSel|.
6030
  *hl-PmenuBorder*
6031
  PmenuBorder Popup menu: Border characters.
@@ -6328,12 +6333,12 @@ And put these lines in your .vimrc: >
6328
  ==============================================================================
6329
  18. Window-local syntax *:ownsyntax*
6330
 
6331
- Normally all windows on a buffer share the same syntax settings. It is
6332
  possible, however, to set a particular window on a file to have its own
6333
- private syntax setting. A possible example would be to edit LaTeX source
6334
  with conventional highlighting in one window, while seeing the same source
6335
  highlighted differently (so as to hide control sequences and indicate bold,
6336
- italic etc regions) in another. The 'scrollbind' option is useful here.
6337
 
6338
  To set the current window to have the syntax "foo", separately from all other
6339
  windows on the buffer: >
@@ -6348,7 +6353,7 @@ Note: This resets the 'spell', 'spellcapcheck', 'spellfile' and 'spelloptions'
6348
  options.
6349
 
6350
  Once a window has its own syntax, syntax commands executed from other windows
6351
- on the same buffer (including :syntax clear) have no effect. Conversely,
6352
  syntax commands executed from that window do not affect other windows on the
6353
  same buffer.
6354
 
@@ -6533,7 +6538,7 @@ it took to match them against the text.
6533
  current window. Use a wider display to see more of
6534
  the output.
6535
 
6536
- The list is sorted by total time. The columns are:
6537
  TOTAL Total time in seconds spent on
6538
  matching this pattern.
6539
  COUNT Number of times the pattern was used.
 
380
  4. Conversion to HTML *2html.vim* *convert-to-HTML*
381
 
382
  2html is not a syntax file itself, but a script that converts the current
383
+ window into HTML. Vim opens a new window in which it builds the HTML file.
384
 
385
+ After you save the resulting file, you can view it with any browser. The
386
  colors should be exactly the same as you see them in Vim. With
387
  |g:html_line_ids| you can jump to specific lines by adding (for example) #L123
388
+ or #123 to the end of the URL in your browser's address bar. And with
389
  |g:html_dynamic_folds| enabled, you can show or hide the text that is folded
390
  in Vim.
391
 
 
394
 
395
  :runtime! syntax/2html.vim
396
  <
397
+ Many variables affect the output of 2html.vim; see below. Any of the on/off
398
  options listed below can be enabled or disabled by setting them explicitly to
399
  the desired value, or restored to their default by removing the variable using
400
  |:unlet|.
 
421
  <
422
  *:TOhtml*
423
  :[range]TOhtml The ":TOhtml" command is defined in a standard plugin.
424
+ This command will source |2html.vim| for you. When a
425
  range is given, this command sets |g:html_start_line|
426
  and |g:html_end_line| to the start and end of the
427
+ range, respectively. Default range is the entire
428
  buffer.
429
 
430
  If the current window is part of a |diff|, unless
431
  |g:html_diff_one_file| is set, :TOhtml will convert
432
  all windows which are part of the diff in the current
433
  tab and place them side-by-side in a <table> element
434
+ in the generated HTML. With |g:html_line_ids| you can
435
  jump to lines in specific windows with (for example)
436
  #W1L42 for line 42 in the first diffed window, or
437
  #W3L87 for line 87 in the third.
 
445
  *g:html_diff_one_file*
446
  Default: 0.
447
  When 0, and using |:TOhtml| all windows involved in a |diff| in the current tab
448
+ page are converted to HTML and placed side-by-side in a <table> element. When
449
  1, only the current buffer is converted.
450
  Example: >
451
 
 
465
  Default: 0.
466
  When 0, display a progress bar in the statusline for each major step in the
467
  2html.vim conversion process.
468
+ When 1, do not display the progress bar. This offers a minor speed
469
+ improvement but you won't have any idea how much longer the conversion might
470
+ take; for big files it can take a long time!
471
  Example: >
472
 
473
  let g:html_no_progress = 1
 
480
  <
481
  Note that the -s flag prevents loading your .vimrc and any plugins, so you
482
  need to explicitly source/enable anything that will affect the HTML
483
+ conversion. See |-E| and |-s-ex| for details. It is probably best to create a
484
  script to replace all the -c commands and use it with the -u flag instead of
485
  specifying each command separately.
486
 
487
  *hl-TOhtmlProgress* *TOhtml-progress-color*
488
  When displayed, the progress bar will show colored boxes along the statusline
489
+ as the HTML conversion proceeds. By default, the background color as the
490
+ current "DiffDelete" highlight group is used. If "DiffDelete" and "StatusLine"
491
  have the same background color, TOhtml will automatically adjust the color to
492
+ differ. If you do not like the automatically selected colors, you can define
493
+ your own highlight colors for the progress bar. Example: >
494
 
495
  hi TOhtmlProgress guifg=#c0ffee ctermbg=7
496
  <
 
509
  *g:html_line_ids*
510
  Default: 1 if |g:html_number_lines| is set, 0 otherwise.
511
  When 1, adds an HTML id attribute to each line number, or to an empty <span>
512
+ inserted for that purpose if no line numbers are shown. This ID attribute
513
  takes the form of L123 for single-buffer HTML pages, or W2L123 for diff-view
514
  pages, and is used to jump to a specific line (in a specific window of a diff
515
+ view). Javascript is inserted to open any closed dynamic folds
516
+ (|g:html_dynamic_folds|) containing the specified line before jumping. The
517
  javascript also allows omitting the window ID in the url, and the leading L.
518
  For example: >
519
 
 
527
  Default: 1.
528
  When 1, generate valid HTML 5 markup with CSS styling, supported in all modern
529
  browsers and many old browsers.
530
+ When 0, generate <font> tags and similar outdated markup. This is not
531
  recommended but it may work better in really old browsers, email clients,
532
  forum posts, and similar situations where basic CSS support is unavailable.
533
  Example: >
 
549
  *g:html_ignore_folding*
550
  Default: 0.
551
  When 0, text in a closed fold is replaced by the text shown for the fold in
552
+ Vim (|fold-foldtext|). See |g:html_dynamic_folds| if you also want to allow
553
  the user to expand the fold as in Vim to see the text inside.
554
  When 1, include all text from the buffer in the generated HTML; whether the
555
+ text is in a fold has no impact at all. |g:html_dynamic_folds| has no effect.
556
 
557
  Either of these commands will ensure that all text in the buffer is included
558
  in the generated HTML (unless it is concealed): >
 
576
  Default: 0.
577
  When 0, if |g:html_dynamic_folds| is 1, generate a column of text similar to
578
  Vim's foldcolumn (|fold-foldcolumn|) the user can click on to toggle folds
579
+ open or closed. The minimum width of the generated text column is the current
580
  'foldcolumn' setting.
581
  When 1, do not generate this column; instead, hovering the mouse cursor over
582
  folded text will open the fold as if |g:html_hover_unfold| were set.
 
586
  *TOhtml-uncopyable-text* *g:html_prevent_copy*
587
  Default: Empty string.
588
  This option prevents certain regions of the generated HTML from being copied,
589
+ when you select all text in document rendered in a browser and copy it.
590
+ Useful for allowing users to copy-paste only the source text even if a fold
591
+ column or line numbers are shown in the generated content. Specify regions to
592
+ be affected in this way as follows:
593
  f: fold column
594
  n: line numbers (also within fold text)
595
  t: fold text
 
606
  If |g:html_prevent_copy| is non-empty, then:
607
 
608
  When "all", read-only <input> elements are used in place of normal text for
609
+ uncopyable regions. In some browsers, especially older browsers, after
610
  selecting an entire page and copying the selection, the <input> tags are not
611
+ pasted with the page text. If |g:html_no_invalid| is 0, the <input> tags have
612
  invalid type; this works in more browsers, but the page will not validate.
613
  Note: This method does NOT work in recent versions of Chrome and equivalent
614
  browsers; the <input> tags get pasted with the text.
 
616
  When "fallback" (default value), the same <input> elements are generated for
617
  older browsers, but newer browsers (detected by CSS feature query) hide the
618
  <input> elements and instead use generated content in an ::before pseudoelement
619
+ to display the uncopyable text. This method should work with the largest
620
  number of browsers, both old and new.
621
 
622
+ When "none", the <input> elements are not generated at all. Only the
623
+ generated-content method is used. This means that old browsers, notably
624
  Internet Explorer, will either copy the text intended not to be copyable, or
625
+ the non-copyable text may not appear at all. However, this is the most
626
  standards-based method, and there will be much less markup.
627
 
628
  *g:html_no_invalid*
629
  Default: 0.
630
  When 0, if |g:html_prevent_copy| is non-empty and |g:html_use_input_for_pc| is
631
  not "none", an invalid attribute is intentionally inserted into the <input>
632
+ element for the uncopyable areas. This prevents pasting the <input> elements
633
+ in some applications. Specifically, some versions of Microsoft Word will not
634
+ paste the <input> elements if they contain this invalid attribute. When 1, no
635
+ invalid markup is inserted, and the generated page should validate. However,
636
  <input> elements may be pasted into some applications and can be difficult to
637
  remove afterward.
638
 
 
641
  When 0, the only way to open a fold generated by 2html.vim with
642
  |g:html_dynamic_folds| set, is to click on the generated fold column.
643
  When 1, use CSS 2.0 to allow the user to open a fold by moving the mouse
644
+ cursor over the displayed fold text. This is useful to allow users with
645
  disabled javascript to view the folded text.
646
 
647
  Note that old browsers (notably Internet Explorer 6) will not support this
 
654
  *g:html_id_expr*
655
  Default: ""
656
  Dynamic folding and jumping to line IDs rely on unique IDs within the document
657
+ to work. If generated HTML is copied into a larger document, these IDs are no
658
+ longer guaranteed to be unique. Set g:html_id_expr to an expression Vim can
659
  evaluate to get a unique string to append to each ID used in a given document,
660
  so that the full IDs will be unique even when combined with other content in a
661
+ larger HTML document. Example, to append _ and the buffer number to each ID: >
662
 
663
  :let g:html_id_expr = '"_" .. bufnr("%")'
664
  <
 
687
  *g:html_no_pre*
688
  Default: 0.
689
  When 0, buffer text in the generated HTML is surrounded by <pre>...</pre>
690
+ tags. Series of whitespace is shown as in Vim without special markup, and tab
691
  characters can be included literally (see |g:html_expand_tabs|).
692
  When 1 (not recommended), the <pre> tags are omitted, and a plain <div> is
693
+ used instead. Whitespace is replaced by a series of &nbsp; character
694
+ references, and <br> is used to end each line. This is another way to allow
695
  text in the generated HTML is wrap (see |g:html_pre_wrap|) which also works in
696
  old browsers, but may cause noticeable differences between Vim's display and
697
  the rendered page generated by 2html.vim.
 
701
  *g:html_no_doc*
702
  Default: 0.
703
  When 1 it doesn't generate a full HTML document with a DOCTYPE, <head>,
704
+ <body>, etc. If |g:html_use_css| is enabled (the default) you'll have to
705
+ define the CSS manually. The |g:html_dynamic_folds| and |g:html_line_ids|
706
  settings (off by default) also insert some JavaScript.
707
 
708
 
 
721
  When 1, <Tab> characters in the buffer text are replaced with an appropriate
722
  number of space characters, or &nbsp; references if |g:html_no_pre| is 1.
723
  When 0, if |g:html_no_pre| is 0 or unset, <Tab> characters in the buffer text
724
+ are included as-is in the generated HTML. This is useful for when you want to
725
  allow copy and paste from a browser without losing the actual whitespace in
726
+ the source document. Note that this can easily break text alignment and
727
  indentation in the HTML, unless set by default.
728
 
729
  Force |2html.vim| to keep <Tab> characters: >
 
738
 
739
  If you do not specify an encoding, |2html.vim| uses the preferred IANA name
740
  for the current value of 'fileencoding' if set, or 'encoding' if not.
741
+ 'encoding' is always used for certain 'buftype' values. 'fileencoding' will
742
+ be set to match the chosen document encoding.
743
 
744
  Automatic detection works for the encodings mentioned specifically by name in
745
  |encoding-names|, but TOhtml will only automatically use those encodings with
746
+ wide browser support. However, you can override this to support specific
747
  encodings that may not be automatically detected by default (see options
748
+ below). See http://www.iana.org/assignments/character-sets for the IANA
749
+ names.
750
 
751
  Note: By default all Unicode encodings are converted to UTF-8 with no BOM in
752
  the generated HTML, as recommended by W3C:
 
757
  *g:html_use_encoding*
758
  Default: none, uses IANA name for current 'fileencoding' as above.
759
  To overrule all automatic charset detection, set g:html_use_encoding to the
760
+ name of the charset to be used. It is recommended to set this variable to
761
  something widely supported, like UTF-8, for anything you will be hosting on a
762
  webserver: >
763
  :let g:html_use_encoding = "UTF-8"
 
786
  mentioned by name at |encoding-names| and which have wide
787
  browser support.
788
  This option allows |2html.vim| to detect the HTML charset for any
789
+ 'fileencoding' or 'encoding' which is not detected automatically. You can
790
+ also use it to override specific existing encoding-charset pairs. For
791
+ example, TOhtml will by default use UTF-8 for all Unicode/UCS encodings. To
792
+ use UTF-16 and UTF-32 instead, use: >
793
  :let g:html_charset_override = {'ucs-4': 'UTF-32', 'utf-16': 'UTF-16'}
794
 
795
  Note that documents encoded in either UTF-32 or UTF-16 have known
 
798
  *g:html_font*
799
  Default: "monospace"
800
  You can specify the font or fonts used in the converted document using
801
+ g:html_font. If this option is set to a string, then the value will be
802
+ surrounded with single quotes. If this option is set to a list then each list
803
+ item is surrounded by single quotes and the list is joined with commas.
804
+ Either way, "monospace" is added as the fallback generic family name and the
805
+ entire result used as the font family (using CSS) or font face (if not using
806
+ CSS). Examples: >
807
 
808
  " font-family: 'Consolas', monospace;
809
  :let g:html_font = "Consolas"
 
877
  ASSEMBLY *ft-asm-syntax* *ft-asmh8300-syntax* *ft-nasm-syntax*
878
  *ft-masm-syntax* *ft-asm68k-syntax* *fasm.vim*
879
 
880
+ Files matching "*.i" could be Progress or Assembly. If the automatic
881
+ detection doesn't work for you, or you don't edit Progress at all, use this in
882
+ your startup vimrc: >
883
  :let filetype_i = "asm"
884
  Replace "asm" with the type of assembly you use.
885
 
 
894
  ia64 Intel Itanium 64
895
  fasm Flat assembly (http://flatassembler.net)
896
  masm Microsoft assembly (.masm files are compiled with
897
+ Microsoft's Macro Assembler. This is only supported
898
  for x86, x86_64, ARM and AARCH64 CPU families)
899
  nasm Netwide assembly
900
  tasm Turbo Assembly (with opcodes 80x86 up to Pentium, and
 
966
 
967
  ASYMPTOTE *asy.vim* *ft-asy-syntax*
968
 
969
+ By default, only basic Asymptote keywords are highlighted. To highlight
970
  extended geometry keywords: >
971
 
972
  :let g:asy_syn_plain = 1
 
975
 
976
  :let g:asy_syn_three = 1
977
 
978
+ By default, Asymptote-defined colors (e.g: lightblue) are highlighted. To
979
  highlight TeX-defined colors (e.g: BlueViolet) use: >
980
 
981
  :let g:asy_syn_texcolors = 1
 
987
  BAAN *baan.vim* *baan-syntax*
988
 
989
  The baan.vim gives syntax support for BaanC of release BaanIV up to SSA ERP LN
990
+ for both 3 GL and 4 GL programming. Large number of standard
991
+ defines/constants are supported.
992
 
993
  Some special violation of coding standards will be signalled when one specify
994
  in ones |.vimrc|: >
 
997
  *baan-folding*
998
 
999
  Syntax folding can be enabled at various levels through the variables
1000
+ mentioned below (Set those in your |.vimrc|). The more complex folding on
1001
  source blocks and SQL can be CPU intensive.
1002
 
1003
  To allow any folding and enable folding at function level use: >
 
1010
  SELECTEMPTY, ... The indentation preceding the begin/end keywords has to
1011
  match (spaces are not considered equal to a tab). >
1012
  let baan_fold_sql=1
1013
+ Note: Block folding can result in many small folds. It is suggested to |:set|
1014
  the options 'foldminlines' and 'foldnestmax' in |.vimrc| or use |:setlocal| in
1015
+ .../after/syntax/baan.vim (see |after-directory|). Eg: >
1016
  set foldminlines=5
1017
  set foldnestmax=6
1018
 
 
1063
  *c_syntax_for_h* use C syntax for *.h files instead of C++/ObjC/ObjC++
1064
  (NOTE: This variable is deprecated and no longer
1065
  necessary, as *.h files now default to C, unless the
1066
+ file contains C++ or Objective-C syntax. If the
1067
  automated detection fails, the default filetype can
1068
  be adjusted using `g:filetype_h`.)
1069
  *c_no_if0* don't highlight "#if 0" blocks as comments
 
1274
  CSV *ft-csv-syntax*
1275
 
1276
  If you change the delimiter of a CSV file, its syntax highlighting will no
1277
+ longer match the changed file content. You will need to unlet the following
1278
  variable: >
1279
 
1280
  :unlet b:csv_delimiter
 
1290
  CYNLIB *cynlib.vim* *ft-cynlib-syntax*
1291
 
1292
  Cynlib files are C++ files that use the Cynlib class library to enable
1293
+ hardware modelling and simulation using C++. Typically Cynlib files have a
1294
+ .cc or a .cpp extension, which makes it very difficult to distinguish them
1295
+ from a normal C++ file. Thus, to enable Cynlib highlighting for .cc files,
1296
+ add this line to your .vimrc file: >
1297
 
1298
  :let cynlib_cyntax_for_cc=1
1299
 
 
1333
  DART *dart.vim* *ft-dart-syntax*
1334
 
1335
  Dart is an object-oriented, typed, class defined, garbage collected language
1336
+ used for developing mobile, desktop, web, and back-end applications. Dart
1337
+ uses a C-like syntax derived from C, Java, and JavaScript, with features
1338
+ adopted from Smalltalk, Python, Ruby, and others.
1339
 
1340
  More information about the language and its development environment at the
1341
  official Dart language website at https://dart.dev
 
1451
  (similar to Javadoc). This syntax script adds doxygen highlighting to c, cpp,
1452
  idl and php files, and should also work with java.
1453
 
1454
+ There are a few of ways to turn on doxygen formatting. It can be done
1455
  explicitly or in a modeline by appending '.doxygen' to the syntax of the file.
1456
  Example: >
1457
  :set syntax=c.doxygen
 
1559
 
1560
  EUPHORIA *euphoria3.vim* *euphoria4.vim* *ft-euphoria-syntax*
1561
 
1562
+ Two syntax highlighting files exist for Euphoria. One for Euphoria
1563
  version 3.1.1, which is the default syntax highlighting file, and one for
1564
  Euphoria version 4.0.5 or later.
1565
 
 
1585
  Elixir and Euphoria share the *.ex file extension. If the filetype is
1586
  specifically set as Euphoria with the g:filetype_euphoria variable, or the
1587
  file is determined to be Euphoria based on keywords in the file, then the
1588
+ filetype will be set as Euphoria. Otherwise, the filetype will default to
1589
  Elixir.
1590
 
1591
 
 
1645
 
1646
  *.ex, *.exs, *.eex, *.leex, *.lock
1647
 
1648
+ Elixir and Euphoria share the *.ex file extension. If the filetype is
1649
  specifically set as Euphoria with the g:filetype_euphoria variable, or the
1650
  file is determined to be Euphoria based on keywords in the file, then the
1651
+ filetype will be set as Euphoria. Otherwise, the filetype will default to
1652
  Elixir.
1653
 
1654
 
 
1660
  development stopped in 2009.
1661
 
1662
  Syntax highlighting is available for the most common elements of FlexWiki
1663
+ syntax. The associated ftplugin script sets some buffer-local options to make
1664
+ editing FlexWiki pages more convenient. FlexWiki considers a newline as the
1665
  start of a new paragraph, so the ftplugin sets 'tw'=0 (unlimited line length),
1666
  'wrap' (wrap long lines instead of using horizontal scrolling), 'linebreak'
1667
  (to wrap at a character in 'breakat' instead of at the last char on screen),
1668
+ and so on. It also includes some keymaps that are disabled by default.
1669
 
1670
  If you want to enable the keymaps that make "j" and "k" and the cursor keys
1671
  move up and down by display lines, add this to your .vimrc: >
 
1726
  FORTRAN *fortran.vim* *ft-fortran-syntax*
1727
 
1728
  Default highlighting and dialect ~
1729
+ Vim highlights according to Fortran 2023 (the most recent standard). This
1730
  choice should be appropriate for most users most of the time because Fortran
1731
  2023 is almost a superset of previous versions (Fortran 2018, 2008, 2003, 95,
1732
  90, 77, and 66). A few legacy constructs deleted or declared obsolescent,
 
1751
 
1752
  If the form of the source code depends, in a non-standard way, upon the file
1753
  extension, then it is most convenient to set fortran_free_source in a ftplugin
1754
+ file. For more information on ftplugin files, see |ftplugin|. Note that this
1755
  will work only if the "filetype plugin indent on" command precedes the "syntax
1756
  on" command in your .vimrc file.
1757
 
1758
  When you edit an existing Fortran file, the syntax script will assume free
1759
  source form if the fortran_free_source variable has been set, and assumes
1760
  fixed source form if the fortran_fixed_source variable has been set. Suppose
1761
+ neither of these variables have been set. In that case, the syntax script
1762
  attempts to determine which source form has been used by examining the file
1763
  extension using conventions common to the ifort, gfortran, Cray, NAG, and
1764
  PathScale compilers (.f, .for, .f77 for fixed-source, .f90, .f95, .f03, .f08
1765
  for free-source). No default is used for the .fpp and .ftn file extensions
1766
+ because different compilers treat them differently. If none of this works,
1767
  then the script examines the first five columns of the first 500 lines of your
1768
+ file. If no signs of free source form are detected, then the file is assumed
1769
  to be in fixed source form. The algorithm should work in the vast majority of
1770
  cases. In some cases, such as a file that begins with 500 or more full-line
1771
  comments, the script may incorrectly decide that the code is in fixed form.
 
1810
  to instruct the syntax script to define fold regions for program units, that
1811
  is main programs starting with a program statement, subroutines, function
1812
  subprograms, modules, submodules, blocks of comment lines, and block data
1813
+ units. Block, interface, associate, critical, type definition, and change
1814
+ team constructs will also be folded. If you also set the variable
1815
  fortran_fold_conditionals with a command such as >
1816
  :let fortran_fold_conditionals=1
1817
  then fold regions will also be defined for do loops, if blocks, select case,
 
2292
  *g:vim_json_warnings*
2293
 
2294
  The json syntax file provides syntax highlighting with conceal support by
2295
+ default. To disable concealment: >
2296
  let g:vim_json_conceal = 0
2297
 
2298
  To disable syntax highlighting of errors: >
 
2448
 
2449
  LUA *lua.vim* *ft-lua-syntax*
2450
 
2451
+ The Lua syntax file can be used for versions 4.0, 5.0+. You can select one of
2452
  these versions using the global variables |g:lua_version| and
2453
  |g:lua_subversion|.
2454
 
 
2456
  MAIL *mail.vim* *ft-mail.vim*
2457
 
2458
  Vim highlights all the standard elements of an email (headers, signatures,
2459
+ quoted text and URLs / email addresses). In keeping with standard
2460
+ conventions, signatures begin in a line containing only "--" followed
2461
+ optionally by whitespaces and end with a newline.
2462
 
2463
  Vim treats lines beginning with ']', '}', '|', '>' or a word followed by '>'
2464
  as quoted text. However Vim highlights headers and signatures in quoted text
 
2499
 
2500
  Maple V, by Waterloo Maple Inc, supports symbolic algebra. The language
2501
  supports many packages of functions which are selectively loaded by the user.
2502
+ The standard set of packages' functions as supplied in Maple V release 4 may
2503
+ be highlighted at the user's discretion. Users may place in their .vimrc
2504
+ file: >
2505
 
2506
  :let mvpkg_all= 1
2507
 
 
2555
  MBSYNC *mbsync.vim* *ft-mbsync-syntax*
2556
 
2557
  The mbsync application uses a configuration file to setup mailboxes names,
2558
+ user and password. All files ending with `.mbsyncrc` or with the name
2559
  `isyncrc` will be recognized as mbsync configuration files.
2560
 
2561
  MEDIAWIKI *ft-mediawiki-syntax*
2562
 
2563
  By default, syntax highlighting includes basic HTML tags like style and
2564
+ headers |html.vim|. For strict Mediawiki syntax highlighting: >
2565
 
2566
  let g:html_no_rendering = 1
2567
 
 
2589
  m2pim = 'm2pim', m2iso = 'm2iso', m2r10 = 'm2r10'
2590
 
2591
  A dialect tag comment is recognised by Vim if it occurs within the first 200
2592
+ lines of the source file. Only the very first such comment is recognised, any
2593
  additional dialect tag comments are ignored.
2594
 
2595
  Example: >
 
2794
 
2795
  :let g:filetype_md = 'pandoc'
2796
 
2797
+ The pandoc syntax plugin uses |conceal| for pretty highlighting. Default is 1 >
2798
 
2799
  :let g:pandoc#syntax#conceal#use = 1
2800
 
 
2823
  - inlinecode
2824
  - inlinemath
2825
 
2826
+ You can customize the way concealing works. For example, if you prefer to
2827
+ mark footnotes with the `*` symbol: >
2828
 
2829
  :let g:pandoc#syntax#conceal#cchar_overrides = {"footnote" : "*"}
2830
 
 
2844
  :let g:pandoc#syntax#codeblocks#embeds#use = 1
2845
 
2846
  For specify what languages and using what syntax files to highlight embeds.
2847
+ This is a list of language names. When the language pandoc and vim use don't
2848
+ match, you can use the "PANDOC=VIM" syntax. For example: >
2849
 
2850
  :let g:pandoc#syntax#codeblocks#embeds#langs = ["ruby", "bash=sh"]
2851
 
 
2860
 
2861
  :let g:pandoc#syntax#style#underline_special = 1
2862
 
2863
+ Detect and highlight definition lists. Disabling this can improve
2864
+ performance. Default = 1 (i.e., enabled by default) >
2865
 
2866
  :let g:pandoc#syntax#style#use_definition_lists = 1
2867
 
 
2869
 
2870
  :PandocHighlight LANG
2871
 
2872
+ Enables embedded highlighting for language LANG in codeblocks. Uses the
2873
  syntax for items in g:pandoc#syntax#codeblocks#embeds#langs. >
2874
 
2875
  :PandocUnhighlight LANG
 
3282
  R *r.vim* *ft-r-syntax*
3283
 
3284
  The parsing of R code for syntax highlight starts 40 lines backwards, but you
3285
+ can set a different value in your |vimrc|. Example: >
3286
  let r_syntax_minlines = 60
3287
 
3288
  You can also turn off syntax highlighting of ROxygen: >
 
3308
  let rmd_syn_hl_chunk = 1
3309
 
3310
  By default, chunks of R code will be highlighted following the rules of R
3311
+ language. Moreover, whenever the buffer is saved, Vim scans the buffer and
3312
+ highlights other languages if they are present in new chunks. LaTeX code also
3313
+ is automatically recognized and highlighted when the buffer is saved. This
3314
  behavior can be controlled with the variables `rmd_dynamic_fenced_languages`,
3315
  and `rmd_include_latex` whose valid values are: >
3316
  let rmd_dynamic_fenced_languages = 0 " No autodetection of languages
 
3333
 
3334
  RASI *rasi.vim* *ft-rasi-syntax*
3335
 
3336
+ Rasi stands for Rofi Advanced Style Information. It is used by the program
3337
+ rofi to style the rendering of the search window. The language is heavily
3338
+ inspired by CSS stylesheet. Files with the following extensions are
3339
+ recognized as rasi files: .rasi.
3340
 
3341
  READLINE *readline.vim* *ft-readline-syntax*
3342
 
 
3688
  Sh: EMBEDDING LANGUAGES~
3689
 
3690
  You may wish to embed languages into sh. I'll give an example courtesy of
3691
+ Lorance Stinson on how to do this with awk as an example. Put the following
3692
  file into $HOME/.vim/after/syntax/sh/awkembed.vim: >
3693
 
3694
  " AWK Embedding:
 
3785
 
3786
  This will make the syntax synchronization start 1000 lines before the first
3787
  displayed line. If you set "tcsh_minlines" to "fromstart", then
3788
+ synchronization is done from the start of the file. The default value for
3789
  tcsh_minlines is 100. The disadvantage of using a larger number is that
3790
  redrawing can become slow.
3791
 
 
3994
  *g:tex_isk* *g:tex_stylish*
3995
  Tex: Controlling iskeyword~
3996
 
3997
+ Normally, LaTeX keywords support 0-9, a-z, A-z, and 192-255 only. Latex
3998
  keywords don't support the underscore - except when in *.sty files. The
3999
  syntax highlighting script handles this with the following logic:
4000
 
 
4047
  < If you don't want matching to occur inside bold and italicized
4048
  regions, >
4049
  let g:tex_excludematcher= 1
4050
+ < will prevent the texMatcher group from being included in those
4051
+ regions.
4052
 
4053
  TF *tf.vim* *ft-tf-syntax*
4054
 
 
4066
 
4067
  *g:typescript_host_keyword*
4068
  When this variable is set to 1, host-specific APIs such as `addEventListener`
4069
+ are highlighted. To disable set it to zero in your .vimrc: >
4070
 
4071
  let g:typescript_host_keyword = 0
4072
  <
 
4076
 
4077
  *g:typst_embedded_languages*
4078
  Typst files can embed syntax highlighting for other languages by setting the
4079
+ |g:typst_embedded_languages| variable. This variable is a list of language
4080
+ names whose syntax definitions will be included in Typst files. Example: >
4081
 
4082
  let g:typst_embedded_languages = ['python', 'r']
4083
 
 
4170
 
4171
  WDL *wdl.vim* *wdl-syntax*
4172
 
4173
+ The Workflow Description Language is a way to specify data processing
4174
+ workflows with a human-readable and writeable syntax. This is used a lot in
4175
  bioinformatics. More info on the spec can be found here:
4176
  https://github.com/openwdl/wdl
4177
 
 
4239
 
4240
  *g:yaml_schema* *b:yaml_schema*
4241
  A YAML schema is a combination of a set of tags and a mechanism for resolving
4242
+ non-specific tags. For user this means that YAML parser may, depending on
4243
  plain scalar contents, treat plain scalar (which can actually be only string
4244
  and nothing else) as a value of the other type: null, boolean, floating-point,
4245
+ integer. `g:yaml_schema` option determines according to which schema values
4246
+ will be highlighted specially. Supported schemas are
4247
 
4248
  Schema Description ~
4249
  failsafe No additional highlighting.
 
4693
  When the "concealends" argument is given, the start and end matches of
4694
  the region, but not the contents of the region, are marked as concealable.
4695
  Whether or not they are actually concealed depends on the setting on the
4696
+ 'conceallevel' option. The ends of a region can only be concealed separately
4697
  in this way when they have their own highlighting via "matchgroup". The
4698
  |synconcealed()| function can be used to retrieve information about conealed
4699
  items.
 
4977
 
4978
  :sy[ntax] conceal [on|off]
4979
  This defines if the following ":syntax" commands will define keywords,
4980
+ matches or regions with the "conceal" flag set. After ":syn conceal
4981
  on", all subsequent ":syn keyword", ":syn match" or ":syn region"
4982
  defined will have the "conceal" flag set implicitly. ":syn conceal
4983
  off" returns to the normal state where the "conceal" flag must be
 
5479
  < In case g:colors_name has not been defined :colo will
5480
  output "default". Its palette is defined in the file
5481
  "$VIMRUNTIME/syntax/syncolor.vim" and is based on
5482
+ legacy versions of peachpuff and desert. When
5483
+ compiled without the |+eval| feature it will output
5484
+ "unknown".
5485
 
5486
  :colo[rscheme] {name} Load color scheme {name}. This searches 'runtimepath'
5487
  for the file "colors/{name}.vim". The first one that
 
5579
 
5580
  :hi[ghlight] [default] {group-name} {key}={arg} ...
5581
  Add a highlight group, or change the highlighting for
5582
+ an existing group. If a given color name is not
5583
  recognized, each `colors/lists/default.vim` found on
5584
  'runtimepath' will be loaded.
5585
  See |highlight-args| for the {key}={arg} arguments.
 
5614
  Last set from /home/mool/vim/vim7/runtime/syntax/syncolor.vim ~
5615
 
5616
  When ":hi clear" is used then the script where this command is used will be
5617
+ mentioned for the default values. See |:verbose-cmd| for more information.
5618
 
5619
  *highlight-args* *E416* *E417* *E423*
5620
  There are three types of terminals for highlighting:
 
5815
  "fg" and "bg" colors will not be adjusted.
5816
 
5817
  ctermfont={font-nr} *highlight-ctermfont*
5818
+ This gives the alternative font number to use in the terminal. The
5819
  available fonts depend on the terminal, and if the terminal is not set
5820
+ up for alternative fonts this simply won't do anything. The range of
5821
  {font-nr} is 0-10 where 0 resets the font to the default font, 1-9
5822
  selects one of the 9 alternate fonts, and 10 selects the Fraktur font.
5823
  For more information see your terminal's handling of SGR parameters
 
5911
  colorscheme alt
5912
  <
5913
  If you want to develop a color list that can be relied on by others,
5914
+ it is best to prefix your color names. By convention these color
5915
+ lists are placed in the colors/lists directory. You can see an
5916
+ example in '$VIMRUNTIME/colors/lists/csscolors.vim'. This list would
5917
+ be sourced by a color scheme using: >
5918
 
5919
  :runtime colors/lists/csscolors.vim
5920
  :highlight Comment guifg=css_turquoise
 
5940
  *hl-CursorIM*
5941
  CursorIM Like Cursor, but used when in IME mode. |CursorIM|
5942
  *hl-CursorColumn*
5943
+ CursorColumn Screen column that the cursor is in when 'cursorcolumn' is
5944
+ set.
5945
  *hl-CursorLine*
5946
  CursorLine Screen line that the cursor is in when 'cursorline' is set.
5947
  *hl-Directory*
 
6027
  *hl-PmenuThumb*
6028
  PmenuThumb Popup menu: Thumb of the scrollbar.
6029
  *hl-PmenuMatch*
6030
+ PmenuMatch Popup menu: Matched text in normal item. Applied in
6031
  combination with |hl-Pmenu|.
6032
  *hl-PmenuMatchSel*
6033
+ PmenuMatchSel Popup menu: Matched text in selected item. Applied in
6034
  combination with |hl-PmenuSel|.
6035
  *hl-PmenuBorder*
6036
  PmenuBorder Popup menu: Border characters.
 
6333
  ==============================================================================
6334
  18. Window-local syntax *:ownsyntax*
6335
 
6336
+ Normally all windows on a buffer share the same syntax settings. It is
6337
  possible, however, to set a particular window on a file to have its own
6338
+ private syntax setting. A possible example would be to edit LaTeX source
6339
  with conventional highlighting in one window, while seeing the same source
6340
  highlighted differently (so as to hide control sequences and indicate bold,
6341
+ italic etc regions) in another. The 'scrollbind' option is useful here.
6342
 
6343
  To set the current window to have the syntax "foo", separately from all other
6344
  windows on the buffer: >
 
6353
  options.
6354
 
6355
  Once a window has its own syntax, syntax commands executed from other windows
6356
+ on the same buffer (including :syntax clear) have no effect. Conversely,
6357
  syntax commands executed from that window do not affect other windows on the
6358
  same buffer.
6359
 
 
6538
  current window. Use a wider display to see more of
6539
  the output.
6540
 
6541
+ The list is sorted by total time. The columns are:
6542
  TOTAL Total time in seconds spent on
6543
  matching this pattern.
6544
  COUNT Number of times the pattern was used.
runtime/doc/tabpage.txt CHANGED
@@ -1,4 +1,4 @@
1
- *tabpage.txt* For Vim version 9.1. Last change: 2025 Aug 06
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
@@ -145,7 +145,7 @@ something else.
145
  :tabclose $ " close the last tab page
146
  :tabclose # " close the last accessed tab page
147
 
148
- When a tab page is closed the next tab page will become the current one. This
149
  behaviour can be customized using the 'tabclose' option.
150
 
151
  *:tabo* *:tabonly*
@@ -277,7 +277,7 @@ REORDERING TAB PAGES:
277
 
278
 
279
  Note that although it is possible to move a tab page behind the N-th one by
280
- using :Ntabmove. And move it by N places by using :+Ntabmove. For
281
  clarification what +N means in this context see |[range]|.
282
 
283
 
 
1
+ *tabpage.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
 
145
  :tabclose $ " close the last tab page
146
  :tabclose # " close the last accessed tab page
147
 
148
+ When a tab page is closed the next tab page will become the current one. This
149
  behaviour can be customized using the 'tabclose' option.
150
 
151
  *:tabo* *:tabonly*
 
277
 
278
 
279
  Note that although it is possible to move a tab page behind the N-th one by
280
+ using :Ntabmove. And move it by N places by using :+Ntabmove. For
281
  clarification what +N means in this context see |[range]|.
282
 
283
 
runtime/doc/tagsrch.txt CHANGED
@@ -1,4 +1,4 @@
1
- *tagsrch.txt* For Vim version 9.1. Last change: 2025 May 01
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
@@ -44,7 +44,7 @@ below.
44
  {name} can be a regexp pattern, see |tag-regexp|.
45
  When there are several matching tags for {name}, jump
46
  to the [count] one. When [count] is omitted the
47
- first one is jumped to. See |tag-matchlist| for
48
  jumping to other matching tags.
49
 
50
  g<LeftMouse> *g<LeftMouse>*
@@ -54,7 +54,7 @@ CTRL-] Jump to the definition of the keyword under the
54
  keyword under or after cursor.
55
  When there are several matching tags for {name}, jump
56
  to the [count] one. When no [count] is given the
57
- first one is jumped to. See |tag-matchlist| for
58
  jumping to other matching tags.
59
 
60
  *v_CTRL-]*
@@ -103,7 +103,7 @@ The ignore-case matches are found when:
103
 
104
  Note that using ignore-case tag searching disables binary searching in the
105
  tags file, which causes a slowdown. This can be avoided by fold-case sorting
106
- the tag file. See the 'tagbsearch' option for an explanation.
107
 
108
  ==============================================================================
109
  2. Tag stack *tag-stack* *tagstack* *E425*
@@ -182,7 +182,7 @@ commands explained above the tag stack will look like this:
182
  1 1 main 1 harddisk2:text/vim/test
183
  2 1 FuncB 59 harddisk2:text/vim/src/main.c
184
 
185
- The |gettagstack()| function returns the tag stack of a specified window. The
186
  |settagstack()| function modifies the tag stack of a window.
187
 
188
  *tagstack-examples*
@@ -308,7 +308,7 @@ g CTRL-] Like CTRL-], but use ":tjump" instead of ":tag".
308
  not given, the last tag name from the tag stack is
309
  used. The search pattern to locate the tag line is
310
  prefixed with "\V" to escape all the special
311
- characters (very nomagic). The location list showing
312
  the matching tags is independent of the tag stack.
313
  See |tag-!| for [!].
314
 
@@ -441,7 +441,7 @@ current file changed ! option option action ~
441
  This works because the tag is put on the stack anyway. If you want to lose
442
  the changes you can use the ":tag!" command.
443
  - If the tag is in another file and the window includes 'winfixbuf', the
444
- command will fail. If the tag is in the same file then it may succeed.
445
 
446
  *tag-security*
447
  Note that Vim forbids some commands, for security reasons. This works like
@@ -455,8 +455,8 @@ would otherwise go unnoticed. Example: >
455
  :$d|/tag-function-name/
456
 
457
  In Vi the ":tag" command sets the last search pattern when the tag is searched
458
- for. In Vim this is not done, the previous search pattern is still remembered,
459
- unless the 't' flag is present in 'cpoptions'.
460
 
461
  *emacs-tags* *emacs_tags* *E430*
462
  Emacs style tag files are only supported if Vim was compiled with the
@@ -465,7 +465,7 @@ files here, it is only supported for backwards compatibility :-).
465
 
466
  Lines in Emacs tags files can be very long. Vim only deals with lines of up
467
  to about 510 bytes. To see whether lines are ignored set 'verbose' to 5 or
468
- higher. Non-Emacs tags file lines can be any length.
469
 
470
  *tags-option*
471
  The 'tags' option is a list of file names. Each of these files is searched
@@ -535,7 +535,7 @@ Some programs that generate tags files:
535
  ctags As found on most Unix systems. Only supports C. Only
536
  does the basic work.
537
  universal ctags A maintained version of ctags based on exuberant
538
- ctags. See https://ctags.io.
539
  *Exuberant_ctags*
540
  exuberant ctags This is a very good one. It works for C, C++, Java,
541
  Fortran, Eiffel and others. It can generate tags for
@@ -586,7 +586,7 @@ ctags).
586
  {term} ;" The two characters semicolon and double quote. This is
587
  interpreted by Vi as the start of a comment, which makes the
588
  following be ignored. This is for backwards compatibility
589
- with Vi, it ignores the following fields. Example: >
590
  APP file /^static int APP;$/;" v
591
  < When {tagaddress} is not a line number or search pattern, then
592
  {term} must be |;". Here the bar ends the command (excluding
@@ -928,7 +928,8 @@ The function should return a List of Dict entries. Each Dict must at least
928
  include the following entries and each value must be a string:
929
  name Name of the tag.
930
  filename Name of the file where the tag is defined. It is
931
- either relative to the current directory or a full path.
 
932
  cmd Ex command used to locate the tag in the file. This
933
  can be either an Ex search pattern or a line number.
934
  Note that the format is similar to that of |taglist()|, which makes it possible
 
1
+ *tagsrch.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
 
44
  {name} can be a regexp pattern, see |tag-regexp|.
45
  When there are several matching tags for {name}, jump
46
  to the [count] one. When [count] is omitted the
47
+ first one is jumped to. See |tag-matchlist| for
48
  jumping to other matching tags.
49
 
50
  g<LeftMouse> *g<LeftMouse>*
 
54
  keyword under or after cursor.
55
  When there are several matching tags for {name}, jump
56
  to the [count] one. When no [count] is given the
57
+ first one is jumped to. See |tag-matchlist| for
58
  jumping to other matching tags.
59
 
60
  *v_CTRL-]*
 
103
 
104
  Note that using ignore-case tag searching disables binary searching in the
105
  tags file, which causes a slowdown. This can be avoided by fold-case sorting
106
+ the tag file. See the 'tagbsearch' option for an explanation.
107
 
108
  ==============================================================================
109
  2. Tag stack *tag-stack* *tagstack* *E425*
 
182
  1 1 main 1 harddisk2:text/vim/test
183
  2 1 FuncB 59 harddisk2:text/vim/src/main.c
184
 
185
+ The |gettagstack()| function returns the tag stack of a specified window. The
186
  |settagstack()| function modifies the tag stack of a window.
187
 
188
  *tagstack-examples*
 
308
  not given, the last tag name from the tag stack is
309
  used. The search pattern to locate the tag line is
310
  prefixed with "\V" to escape all the special
311
+ characters (very nomagic). The location list showing
312
  the matching tags is independent of the tag stack.
313
  See |tag-!| for [!].
314
 
 
441
  This works because the tag is put on the stack anyway. If you want to lose
442
  the changes you can use the ":tag!" command.
443
  - If the tag is in another file and the window includes 'winfixbuf', the
444
+ command will fail. If the tag is in the same file then it may succeed.
445
 
446
  *tag-security*
447
  Note that Vim forbids some commands, for security reasons. This works like
 
455
  :$d|/tag-function-name/
456
 
457
  In Vi the ":tag" command sets the last search pattern when the tag is searched
458
+ for. In Vim this is not done, the previous search pattern is still
459
+ remembered, unless the 't' flag is present in 'cpoptions'.
460
 
461
  *emacs-tags* *emacs_tags* *E430*
462
  Emacs style tag files are only supported if Vim was compiled with the
 
465
 
466
  Lines in Emacs tags files can be very long. Vim only deals with lines of up
467
  to about 510 bytes. To see whether lines are ignored set 'verbose' to 5 or
468
+ higher. Non-Emacs tags file lines can be any length.
469
 
470
  *tags-option*
471
  The 'tags' option is a list of file names. Each of these files is searched
 
535
  ctags As found on most Unix systems. Only supports C. Only
536
  does the basic work.
537
  universal ctags A maintained version of ctags based on exuberant
538
+ ctags. See https://ctags.io.
539
  *Exuberant_ctags*
540
  exuberant ctags This is a very good one. It works for C, C++, Java,
541
  Fortran, Eiffel and others. It can generate tags for
 
586
  {term} ;" The two characters semicolon and double quote. This is
587
  interpreted by Vi as the start of a comment, which makes the
588
  following be ignored. This is for backwards compatibility
589
+ with Vi, it ignores the following fields. Example: >
590
  APP file /^static int APP;$/;" v
591
  < When {tagaddress} is not a line number or search pattern, then
592
  {term} must be |;". Here the bar ends the command (excluding
 
928
  include the following entries and each value must be a string:
929
  name Name of the tag.
930
  filename Name of the file where the tag is defined. It is
931
+ either relative to the current directory or a full
932
+ path.
933
  cmd Ex command used to locate the tag in the file. This
934
  can be either an Ex search pattern or a line number.
935
  Note that the format is similar to that of |taglist()|, which makes it possible
runtime/doc/term.txt CHANGED
@@ -1,4 +1,4 @@
1
- *term.txt* For Vim version 9.1. Last change: 2025 Sep 02
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
@@ -676,7 +676,7 @@ anymore.
676
 
677
  *xterm-true-color*
678
  Vim supports using true colors in the terminal (taken from |highlight-guifg|
679
- and |highlight-guibg|), given that the terminal supports this. To make this
680
  work the 'termguicolors' option needs to be set.
681
  See https://github.com/termstandard/colors for a list of terminals that
682
  support true colors.
@@ -746,8 +746,8 @@ Note: When 't_EI' is not set then 't_SI' and 't_SR' will not be sent. And
746
  when 't_SI' or 't_SR' is not set then 't_EI' is sent only once.
747
 
748
  This can be used to change the shape or color of the cursor in Insert or
749
- Replace mode. These are not standard termcap/terminfo entries, you need to set
750
- them yourself.
751
  Example for an xterm, this changes the color of the cursor: >
752
  if &term =~ "xterm"
753
  let &t_SI = "\<Esc>]12;purple\x7"
@@ -1111,7 +1111,8 @@ which characters are included in a word. A double click on a character
1111
  that has a match selects until that match (like using "v%"). If the match is
1112
  an #if/#else/#endif block, the selection becomes linewise.
1113
  For MS-Windows and xterm the time for double clicking can be set with the
1114
- 'mousetime' option. For the other systems this time is defined outside of Vim.
 
1115
  An example, for using a double click to jump to the tag under the cursor: >
1116
  :map <2-LeftMouse> :exe "tag " .. expand("<cword>")<CR>
1117
 
@@ -1140,10 +1141,10 @@ modifiers.
1140
  When working with several windows, the size of the windows can be changed by
1141
  dragging the status line with the mouse. Point the mouse at a status line,
1142
  press the left button, move the mouse to the new position of the status line,
1143
- release the button. Just clicking the mouse in a status line makes that window
1144
- the current window, without moving the cursor. If by selecting a window it
1145
- will change position or size, the dragging of the status line will look
1146
- confusing, but it will work (just try it).
1147
 
1148
  *<MiddleRelease>* *<MiddleDrag>*
1149
  Mouse clicks can be mapped. The codes for mouse clicks are:
 
1
+ *term.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
 
676
 
677
  *xterm-true-color*
678
  Vim supports using true colors in the terminal (taken from |highlight-guifg|
679
+ and |highlight-guibg|), given that the terminal supports this. To make this
680
  work the 'termguicolors' option needs to be set.
681
  See https://github.com/termstandard/colors for a list of terminals that
682
  support true colors.
 
746
  when 't_SI' or 't_SR' is not set then 't_EI' is sent only once.
747
 
748
  This can be used to change the shape or color of the cursor in Insert or
749
+ Replace mode. These are not standard termcap/terminfo entries, you need to
750
+ set them yourself.
751
  Example for an xterm, this changes the color of the cursor: >
752
  if &term =~ "xterm"
753
  let &t_SI = "\<Esc>]12;purple\x7"
 
1111
  that has a match selects until that match (like using "v%"). If the match is
1112
  an #if/#else/#endif block, the selection becomes linewise.
1113
  For MS-Windows and xterm the time for double clicking can be set with the
1114
+ 'mousetime' option. For the other systems this time is defined outside of
1115
+ Vim.
1116
  An example, for using a double click to jump to the tag under the cursor: >
1117
  :map <2-LeftMouse> :exe "tag " .. expand("<cword>")<CR>
1118
 
 
1141
  When working with several windows, the size of the windows can be changed by
1142
  dragging the status line with the mouse. Point the mouse at a status line,
1143
  press the left button, move the mouse to the new position of the status line,
1144
+ release the button. Just clicking the mouse in a status line makes that
1145
+ window the current window, without moving the cursor. If by selecting a
1146
+ window it will change position or size, the dragging of the status line will
1147
+ look confusing, but it will work (just try it).
1148
 
1149
  *<MiddleRelease>* *<MiddleDrag>*
1150
  Mouse clicks can be mapped. The codes for mouse clicks are:
runtime/doc/terminal.txt CHANGED
@@ -1,4 +1,4 @@
1
- *terminal.txt* For Vim version 9.1. Last change: 2025 Oct 08
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
@@ -54,7 +54,7 @@ The terminal feature requires the |+job| and |+channel| features.
54
  1. Basic use *terminal-use*
55
 
56
  This feature is for running a terminal emulator in a Vim window. A job can be
57
- started connected to the terminal emulator. For example, to run a shell: >
58
  :term bash
59
 
60
  Or to run build command: >
@@ -71,7 +71,8 @@ the job. This uses a pty when possible. You can click outside of the
71
  terminal window to move keyboard focus elsewhere.
72
 
73
  *t_CTRL-W_CTRL-W* *t_CTRL-W_:*
74
- CTRL-W can be used to navigate between windows and other CTRL-W commands, e.g.:
 
75
  CTRL-W CTRL-W move focus to the next window
76
  CTRL-W : enter an Ex command
77
  See |CTRL-W| for more commands.
@@ -271,12 +272,12 @@ Command syntax ~
271
  the terminal window) the command line
272
  height will be reduced as needed.
273
  ++cols={width} Use {width} for the terminal window
274
- width. If the terminal uses the full
275
  Vim width (no window left or right of
276
  the terminal window) this value is
277
  ignored.
278
  ++eof={text} When using [range]: text to send after
279
- the last line was written. Cannot
280
  contain white space. A CR is
281
  appended. For MS-Windows the default
282
  is to send CTRL-D.
@@ -322,13 +323,13 @@ fails, use ! to force, as usual.
322
  *terminal-close*
323
  When the terminal job finishes and no [command] was given (e.g. the 'shell'
324
  command was executed), the terminal window will be closed by default (unless
325
- the buffer in next window receiving the space has the 'nobuflisted' option set,
326
- in which case the terminal window would not be closed automatically, but a new
327
- empty buffer would be opened in that window).
328
 
329
  When the terminal window is closed, e.g. when the shell exits and "++close"
330
  argument was used, and this is the last normal Vim window, then Vim will exit.
331
- This is like using |:quit| in a normal window. Help and preview windows are
332
  not counted.
333
 
334
  To have a background job run without a window, and open the window when it's
@@ -384,7 +385,7 @@ Use CTRL-W N (or 'termwinkey' N) to switch to Terminal-Normal mode. Now the
384
  contents of the terminal window is under control of Vim, the job output is
385
  suspended. CTRL-\ CTRL-N does the same.
386
 
387
- Terminal-Job mode is where |:tmap| mappings are applied. Keys sent by
388
  |term_sendkeys()| are not subject to tmap, but keys from |feedkeys()| are.
389
 
390
  It is not possible to enter Insert mode from Terminal-Job mode.
@@ -394,7 +395,7 @@ In Terminal-Normal mode you can move the cursor around with the usual Vim
394
  commands, Visually mark text, yank text, etc. But you cannot change the
395
  contents of the buffer. The commands that would start insert mode, such as
396
  'i' and 'a', return to Terminal-Job mode. The window will be updated to show
397
- the contents of the terminal. |:startinsert| is ineffective.
398
 
399
  In Terminal-Normal mode the statusline and window title show "(Terminal)". If
400
  the job ends while in Terminal-Normal mode this changes to
@@ -402,7 +403,7 @@ the job ends while in Terminal-Normal mode this changes to
402
 
403
  When the job outputs lines in the terminal, such that the contents scrolls off
404
  the top, those lines are remembered and can be seen in Terminal-Normal mode.
405
- The number of lines is limited by the 'termwinscroll' option. When going over
406
  this limit, the first 10% of the scrolled lines are deleted and are lost.
407
 
408
 
@@ -486,10 +487,10 @@ version, rename to winpty32.dll and winpty64.dll to match the way Vim was
486
  build.
487
  *ConPTY* *E982*
488
  On more recent versions of MS-Windows 10 (beginning with the "October 2018
489
- Update"), winpty is no longer required. On those versions, |:terminal| will use
490
  Windows' built-in support for hosting terminal applications, "ConPTY". When
491
  ConPTY is in use, there may be rendering artifacts regarding ambiguous-width
492
- characters. If you encounter any such issues, install "winpty". Until the
493
  ConPTY problems have been fixed "winpty" will be preferred.
494
 
495
  Environment variables are used to pass information to the running job:
@@ -540,7 +541,7 @@ term_dumpdiff({filename}, {filename} [, {options}])
540
  "norestore" do not add the terminal window to a
541
  session file
542
 
543
- Each character in the middle part indicates a difference. If
544
  there are multiple differences only the first in this list is
545
  used:
546
  X different character
@@ -641,8 +642,8 @@ term_getattr({attr}, {what}) *term_getattr()*
641
 
642
 
643
  term_getcursor({buf}) *term_getcursor()*
644
- Get the cursor position of terminal {buf}. Returns a list with
645
- two numbers and a dictionary: [row, col, dict].
646
 
647
  "row" and "col" are one based, the first screen cell is row
648
  1, column 1. This is the cursor position of the terminal
@@ -657,7 +658,7 @@ term_getcursor({buf}) *term_getcursor()*
657
  for a vertical bar.
658
  "color" color of the cursor, e.g. "green"
659
 
660
- {buf} must be the buffer number of a terminal window. If the
661
  buffer does not exist or is not a terminal window, an empty
662
  list is returned.
663
 
@@ -670,7 +671,7 @@ term_getcursor({buf}) *term_getcursor()*
670
  term_getjob({buf}) *term_getjob()*
671
  Get the Job associated with terminal window {buf}.
672
  {buf} is used as with |term_getsize()|.
673
- Returns |v:null| when there is no job. In Vim9 script, return
674
  |null_job| when there is no job.
675
 
676
  Can also be used as a |method|: >
@@ -713,7 +714,7 @@ term_getscrolled({buf}) *term_getscrolled()*
713
 
714
 
715
  term_getsize({buf}) *term_getsize()*
716
- Get the size of terminal {buf}. Returns a list with two
717
  numbers: [rows, cols]. This is the size of the terminal, not
718
  the window containing the terminal.
719
 
@@ -728,14 +729,14 @@ term_getsize({buf}) *term_getsize()*
728
 
729
 
730
  term_getstatus({buf}) *term_getstatus()*
731
- Get the status of terminal {buf}. This returns a String with
732
  a comma-separated list of these items:
733
  running job is running
734
  finished job has finished
735
  normal in Terminal-Normal mode
736
  One of "running" or "finished" is always present.
737
 
738
- {buf} must be the buffer number of a terminal window. If the
739
  buffer does not exist or is not a terminal window, an empty
740
  string is returned.
741
 
@@ -746,10 +747,10 @@ term_getstatus({buf}) *term_getstatus()*
746
 
747
 
748
  term_gettitle({buf}) *term_gettitle()*
749
- Get the title of terminal {buf}. This is the title that the
750
  job in the terminal has set.
751
 
752
- {buf} must be the buffer number of a terminal window. If the
753
  buffer does not exist or is not a terminal window, an empty
754
  string is returned.
755
 
@@ -764,8 +765,8 @@ term_gettty({buf} [, {input}]) *term_gettty()*
764
  terminal window {buf}. {buf} is used as with |term_getsize()|.
765
 
766
  When {input} is omitted or 0, return the name for writing
767
- (stdout). When {input} is 1 return the name for reading
768
- (stdin). On UNIX, both return same name.
769
 
770
  Can also be used as a |method|: >
771
  GetBufnr()->term_gettty()
@@ -808,7 +809,7 @@ term_sendkeys({buf}, {keys}) *term_sendkeys()*
808
  Send keystrokes {keys} to terminal {buf}.
809
  {buf} is used as with |term_getsize()|.
810
 
811
- {keys} are translated as key sequences. For example, "\<c-x>"
812
  means the character CTRL-X.
813
 
814
  Can also be used as a |method|: >
@@ -904,7 +905,7 @@ term_setrestore({buf}, {command}) *term_setrestore()*
904
 
905
 
906
  term_setsize({buf}, {rows}, {cols}) *term_setsize()* *E955*
907
- Set the size of terminal {buf}. The size of the window
908
  containing the terminal will also be adjusted, if possible.
909
  If {rows} or {cols} is zero or negative, that dimension is not
910
  changed.
@@ -922,7 +923,7 @@ term_setsize({buf}, {rows}, {cols}) *term_setsize()* *E955*
922
  term_start({cmd} [, {options}]) *term_start()*
923
  Open a terminal window and run {cmd} in it.
924
 
925
- {cmd} can be a string or a List, like with |job_start()|. The
926
  string "NONE" can be used to open a terminal window without
927
  starting a job, the pty of the terminal can be used by a
928
  command like gdb.
@@ -969,17 +970,17 @@ term_start({cmd} [, {options}]) *term_start()*
969
  "open": open window if needed
970
  Note that "open" can be interruptive.
971
  See |term++close| and |term++open|.
972
- "term_opencmd" command to use for opening the window when
973
- "open" is used for "term_finish"; must
974
- have "%d" where the buffer number goes,
975
- e.g. "10split|buffer %d"; when not
976
  specified "botright sbuf %d" is used
977
  "term_highlight" highlight group to use instead of
978
  "Terminal"
979
  "eof_chars" Text to send after all buffer lines were
980
  written to the terminal. When not set
981
- CTRL-D is used on MS-Windows. For Python
982
- use CTRL-Z or "exit()". For a shell use
983
  "exit". A CR is always added.
984
  "ansi_colors" A list of 16 color names or hex codes
985
  defining the ANSI palette used in GUI
@@ -1014,7 +1015,7 @@ term_wait({buf} [, {time}]) *term_wait()*
1014
  There are several ways to communicate with the job running in a terminal:
1015
  - Use |term_sendkeys()| to send text and escape sequences from Vim to the job.
1016
  - Use the JSON API to send encoded commands from the job to Vim.
1017
- - Use the |client-server| mechanism. This works on machines with an X server
1018
  and on MS-Windows.
1019
 
1020
 
@@ -1180,7 +1181,7 @@ Writing a screen dump test for Vim ~
1180
  *terminal-dumptest*
1181
  For an example see the Test_syntax_c() function in
1182
  src/testdir/test_syntax.vim. The main parts are:
1183
- - Write a file you want to test with. This is useful for testing syntax
1184
  highlighting. You can also start Vim with an empty buffer.
1185
  - Run Vim in a terminal with a specific size. The default is 20 lines of 75
1186
  characters. This makes sure the dump is always this size. The function
@@ -1258,7 +1259,7 @@ kind of difference:
1258
  + character missing in first
1259
  - character missing in second
1260
 
1261
- Alternatively, press "s" to swap the first and second dump. Do this several
1262
  times so that you can spot the difference in the context of the text.
1263
 
1264
  ==============================================================================
@@ -1313,7 +1314,7 @@ Only one debugger can be active at a time.
1313
  *termdebug-timeout*
1314
  Depending on how gdb is launched, termdebug startup time may vary.
1315
  To avoid termdebug to get stuck if the startup process of gdb takes too long,
1316
- a configurable timeout is included. Such time out is configurable in terms of
1317
  multiple of 10ms: >
1318
  let g:termdebug_config['timeout'] = 500 # 500 * 10ms = 5 seconds.
1319
 
@@ -1360,7 +1361,7 @@ You can use CTRL-W CTRL-W or the mouse to move focus between windows.
1360
  Put focus on the gdb window and type: >
1361
  break ex_help
1362
  run
1363
- Vim will start running in the program window. Put focus there and type: >
1364
  :help gui
1365
  Gdb will run into the ex_help breakpoint. The source window now shows the
1366
  ex_cmds.c file. A red "1 " marker will appear in the signcolumn where the
@@ -1388,7 +1389,7 @@ executed.
1388
 
1389
  You can type more advanced commands in the gdb window. For example, type: >
1390
  watch curbuf
1391
- Now click "Cont" in the toolbar (or type "cont" in the gdb window). Execution
1392
  will now continue until the value of "curbuf" changes, which is in do_ecmd().
1393
  To remove this watchpoint again type in the gdb window: >
1394
  delete 3
@@ -1500,7 +1501,7 @@ Other commands ~
1500
  *:Asm* jump to the window with the disassembly, create it if there
1501
  isn't one
1502
  *:Var* jump to the window with the local and argument variables,
1503
- create it if there isn't one. This window updates whenever the
1504
  program is stopped
1505
 
1506
  Events ~
@@ -1809,8 +1810,8 @@ However, the latter form will be deprecated in future releases.
1809
  Change default signs ~
1810
  *termdebug_signs*
1811
  Termdebug uses the hex number of the breakpoint ID in the signcolumn to
1812
- represent breakpoints. If it is greater than "0xFF", then it will be displayed
1813
- as "F+", due to we really only have two screen cells for the sign.
1814
  You may also use decimal breakpoint signs instead, in which case IDs greater
1815
  than 99 will be displayed as "9+".
1816
 
@@ -1857,7 +1858,7 @@ Set the wide value to 1 to use a vertical split without ever changing
1857
 
1858
  Evaluate in Popup Window at Cursor ~
1859
  *termdebug_evaluate_in_popup*
1860
- By default |:Evaluate| will simply echo its output. For larger entities this
1861
  might become difficult to read or even truncated.
1862
  Alternatively, the evaluation result may be output into a popup window at the
1863
  current cursor position: >
 
1
+ *terminal.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
 
54
  1. Basic use *terminal-use*
55
 
56
  This feature is for running a terminal emulator in a Vim window. A job can be
57
+ started connected to the terminal emulator. For example, to run a shell: >
58
  :term bash
59
 
60
  Or to run build command: >
 
71
  terminal window to move keyboard focus elsewhere.
72
 
73
  *t_CTRL-W_CTRL-W* *t_CTRL-W_:*
74
+ CTRL-W can be used to navigate between windows and other CTRL-W commands,
75
+ e.g.:
76
  CTRL-W CTRL-W move focus to the next window
77
  CTRL-W : enter an Ex command
78
  See |CTRL-W| for more commands.
 
272
  the terminal window) the command line
273
  height will be reduced as needed.
274
  ++cols={width} Use {width} for the terminal window
275
+ width. If the terminal uses the full
276
  Vim width (no window left or right of
277
  the terminal window) this value is
278
  ignored.
279
  ++eof={text} When using [range]: text to send after
280
+ the last line was written. Cannot
281
  contain white space. A CR is
282
  appended. For MS-Windows the default
283
  is to send CTRL-D.
 
323
  *terminal-close*
324
  When the terminal job finishes and no [command] was given (e.g. the 'shell'
325
  command was executed), the terminal window will be closed by default (unless
326
+ the buffer in next window receiving the space has the 'nobuflisted' option
327
+ set, in which case the terminal window would not be closed automatically, but
328
+ a new empty buffer would be opened in that window).
329
 
330
  When the terminal window is closed, e.g. when the shell exits and "++close"
331
  argument was used, and this is the last normal Vim window, then Vim will exit.
332
+ This is like using |:quit| in a normal window. Help and preview windows are
333
  not counted.
334
 
335
  To have a background job run without a window, and open the window when it's
 
385
  contents of the terminal window is under control of Vim, the job output is
386
  suspended. CTRL-\ CTRL-N does the same.
387
 
388
+ Terminal-Job mode is where |:tmap| mappings are applied. Keys sent by
389
  |term_sendkeys()| are not subject to tmap, but keys from |feedkeys()| are.
390
 
391
  It is not possible to enter Insert mode from Terminal-Job mode.
 
395
  commands, Visually mark text, yank text, etc. But you cannot change the
396
  contents of the buffer. The commands that would start insert mode, such as
397
  'i' and 'a', return to Terminal-Job mode. The window will be updated to show
398
+ the contents of the terminal. |:startinsert| is ineffective.
399
 
400
  In Terminal-Normal mode the statusline and window title show "(Terminal)". If
401
  the job ends while in Terminal-Normal mode this changes to
 
403
 
404
  When the job outputs lines in the terminal, such that the contents scrolls off
405
  the top, those lines are remembered and can be seen in Terminal-Normal mode.
406
+ The number of lines is limited by the 'termwinscroll' option. When going over
407
  this limit, the first 10% of the scrolled lines are deleted and are lost.
408
 
409
 
 
487
  build.
488
  *ConPTY* *E982*
489
  On more recent versions of MS-Windows 10 (beginning with the "October 2018
490
+ Update"), winpty is no longer required. On those versions, |:terminal| will use
491
  Windows' built-in support for hosting terminal applications, "ConPTY". When
492
  ConPTY is in use, there may be rendering artifacts regarding ambiguous-width
493
+ characters. If you encounter any such issues, install "winpty". Until the
494
  ConPTY problems have been fixed "winpty" will be preferred.
495
 
496
  Environment variables are used to pass information to the running job:
 
541
  "norestore" do not add the terminal window to a
542
  session file
543
 
544
+ Each character in the middle part indicates a difference. If
545
  there are multiple differences only the first in this list is
546
  used:
547
  X different character
 
642
 
643
 
644
  term_getcursor({buf}) *term_getcursor()*
645
+ Get the cursor position of terminal {buf}. Returns a list
646
+ with two numbers and a dictionary: [row, col, dict].
647
 
648
  "row" and "col" are one based, the first screen cell is row
649
  1, column 1. This is the cursor position of the terminal
 
658
  for a vertical bar.
659
  "color" color of the cursor, e.g. "green"
660
 
661
+ {buf} must be the buffer number of a terminal window. If the
662
  buffer does not exist or is not a terminal window, an empty
663
  list is returned.
664
 
 
671
  term_getjob({buf}) *term_getjob()*
672
  Get the Job associated with terminal window {buf}.
673
  {buf} is used as with |term_getsize()|.
674
+ Returns |v:null| when there is no job. In Vim9 script, return
675
  |null_job| when there is no job.
676
 
677
  Can also be used as a |method|: >
 
714
 
715
 
716
  term_getsize({buf}) *term_getsize()*
717
+ Get the size of terminal {buf}. Returns a list with two
718
  numbers: [rows, cols]. This is the size of the terminal, not
719
  the window containing the terminal.
720
 
 
729
 
730
 
731
  term_getstatus({buf}) *term_getstatus()*
732
+ Get the status of terminal {buf}. This returns a String with
733
  a comma-separated list of these items:
734
  running job is running
735
  finished job has finished
736
  normal in Terminal-Normal mode
737
  One of "running" or "finished" is always present.
738
 
739
+ {buf} must be the buffer number of a terminal window. If the
740
  buffer does not exist or is not a terminal window, an empty
741
  string is returned.
742
 
 
747
 
748
 
749
  term_gettitle({buf}) *term_gettitle()*
750
+ Get the title of terminal {buf}. This is the title that the
751
  job in the terminal has set.
752
 
753
+ {buf} must be the buffer number of a terminal window. If the
754
  buffer does not exist or is not a terminal window, an empty
755
  string is returned.
756
 
 
765
  terminal window {buf}. {buf} is used as with |term_getsize()|.
766
 
767
  When {input} is omitted or 0, return the name for writing
768
+ (stdout). When {input} is 1 return the name for reading
769
+ (stdin). On UNIX, both return same name.
770
 
771
  Can also be used as a |method|: >
772
  GetBufnr()->term_gettty()
 
809
  Send keystrokes {keys} to terminal {buf}.
810
  {buf} is used as with |term_getsize()|.
811
 
812
+ {keys} are translated as key sequences. For example, "\<c-x>"
813
  means the character CTRL-X.
814
 
815
  Can also be used as a |method|: >
 
905
 
906
 
907
  term_setsize({buf}, {rows}, {cols}) *term_setsize()* *E955*
908
+ Set the size of terminal {buf}. The size of the window
909
  containing the terminal will also be adjusted, if possible.
910
  If {rows} or {cols} is zero or negative, that dimension is not
911
  changed.
 
923
  term_start({cmd} [, {options}]) *term_start()*
924
  Open a terminal window and run {cmd} in it.
925
 
926
+ {cmd} can be a string or a List, like with |job_start()|. The
927
  string "NONE" can be used to open a terminal window without
928
  starting a job, the pty of the terminal can be used by a
929
  command like gdb.
 
970
  "open": open window if needed
971
  Note that "open" can be interruptive.
972
  See |term++close| and |term++open|.
973
+ "term_opencmd" command to use for opening the window
974
+ when "open" is used for "term_finish";
975
+ must have "%d" where the buffer number
976
+ goes, e.g. "10split|buffer %d"; when not
977
  specified "botright sbuf %d" is used
978
  "term_highlight" highlight group to use instead of
979
  "Terminal"
980
  "eof_chars" Text to send after all buffer lines were
981
  written to the terminal. When not set
982
+ CTRL-D is used on MS-Windows. For Python
983
+ use CTRL-Z or "exit()". For a shell use
984
  "exit". A CR is always added.
985
  "ansi_colors" A list of 16 color names or hex codes
986
  defining the ANSI palette used in GUI
 
1015
  There are several ways to communicate with the job running in a terminal:
1016
  - Use |term_sendkeys()| to send text and escape sequences from Vim to the job.
1017
  - Use the JSON API to send encoded commands from the job to Vim.
1018
+ - Use the |client-server| mechanism. This works on machines with an X server
1019
  and on MS-Windows.
1020
 
1021
 
 
1181
  *terminal-dumptest*
1182
  For an example see the Test_syntax_c() function in
1183
  src/testdir/test_syntax.vim. The main parts are:
1184
+ - Write a file you want to test with. This is useful for testing syntax
1185
  highlighting. You can also start Vim with an empty buffer.
1186
  - Run Vim in a terminal with a specific size. The default is 20 lines of 75
1187
  characters. This makes sure the dump is always this size. The function
 
1259
  + character missing in first
1260
  - character missing in second
1261
 
1262
+ Alternatively, press "s" to swap the first and second dump. Do this several
1263
  times so that you can spot the difference in the context of the text.
1264
 
1265
  ==============================================================================
 
1314
  *termdebug-timeout*
1315
  Depending on how gdb is launched, termdebug startup time may vary.
1316
  To avoid termdebug to get stuck if the startup process of gdb takes too long,
1317
+ a configurable timeout is included. Such time out is configurable in terms of
1318
  multiple of 10ms: >
1319
  let g:termdebug_config['timeout'] = 500 # 500 * 10ms = 5 seconds.
1320
 
 
1361
  Put focus on the gdb window and type: >
1362
  break ex_help
1363
  run
1364
+ Vim will start running in the program window. Put focus there and type: >
1365
  :help gui
1366
  Gdb will run into the ex_help breakpoint. The source window now shows the
1367
  ex_cmds.c file. A red "1 " marker will appear in the signcolumn where the
 
1389
 
1390
  You can type more advanced commands in the gdb window. For example, type: >
1391
  watch curbuf
1392
+ Now click "Cont" in the toolbar (or type "cont" in the gdb window). Execution
1393
  will now continue until the value of "curbuf" changes, which is in do_ecmd().
1394
  To remove this watchpoint again type in the gdb window: >
1395
  delete 3
 
1501
  *:Asm* jump to the window with the disassembly, create it if there
1502
  isn't one
1503
  *:Var* jump to the window with the local and argument variables,
1504
+ create it if there isn't one. This window updates whenever the
1505
  program is stopped
1506
 
1507
  Events ~
 
1810
  Change default signs ~
1811
  *termdebug_signs*
1812
  Termdebug uses the hex number of the breakpoint ID in the signcolumn to
1813
+ represent breakpoints. If it is greater than "0xFF", then it will be
1814
+ displayed as "F+", due to we really only have two screen cells for the sign.
1815
  You may also use decimal breakpoint signs instead, in which case IDs greater
1816
  than 99 will be displayed as "9+".
1817
 
 
1858
 
1859
  Evaluate in Popup Window at Cursor ~
1860
  *termdebug_evaluate_in_popup*
1861
+ By default |:Evaluate| will simply echo its output. For larger entities this
1862
  might become difficult to read or even truncated.
1863
  Alternatively, the evaluation result may be output into a popup window at the
1864
  current cursor position: >
runtime/doc/testing.txt CHANGED
@@ -1,4 +1,4 @@
1
- *testing.txt* For Vim version 9.1. Last change: 2025 Mar 25
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
@@ -26,7 +26,7 @@ There are two types of tests added over time:
26
 
27
  *new-style-testing*
28
  New tests should be added as new style tests. The test scripts are named
29
- test_<feature>.vim (replace <feature> with the feature under test). These use
30
  functions such as |assert_equal()| to keep the test commands and the expected
31
  result in one place.
32
  *old-style-testing*
@@ -58,7 +58,7 @@ test_autochdir() *test_autochdir()*
58
 
59
  test_feedinput({string}) *test_feedinput()*
60
  Characters in {string} are queued for processing as if they
61
- were typed by the user. This uses a low level input buffer.
62
  This function works only when with |+unix| or GUI is running.
63
 
64
  Can also be used as a |method|: >
@@ -96,7 +96,7 @@ test_getvalue({name}) *test_getvalue()*
96
  *test_gui_event()*
97
  test_gui_event({event}, {args})
98
  Generate a GUI {event} with arguments {args} for testing Vim
99
- functionality. This function works only when the GUI is
100
  running.
101
 
102
  {event} is a String and the supported values are:
@@ -116,7 +116,7 @@ test_gui_event({event}, {args})
116
  files: List of file names
117
  row: window row number
118
  col: window column number
119
- modifiers: key modifiers. The supported values are:
120
  0x4 Shift
121
  0x8 Alt
122
  0x10 Ctrl
@@ -131,7 +131,7 @@ test_gui_event({event}, {args})
131
  in {args} are:
132
  find_text: string to find.
133
  repl_text: replacement string.
134
- flags: flags controlling the find/replace. Supported
135
  values are:
136
  1 search next string (find dialog)
137
  2 search next string (replace dialog)
@@ -176,7 +176,7 @@ test_gui_event({event}, {args})
176
  Set or drag the left, right or horizontal scrollbar. Only
177
  works when the scrollbar actually exists. The supported
178
  items in {args} are:
179
- which: Selects the scrollbar. The supported values
180
  are:
181
  left Left scrollbar of the current window
182
  right Right scrollbar of the current window
@@ -202,14 +202,14 @@ test_gui_event({event}, {args})
202
 
203
  "tabline":
204
  Inject a mouse click event on the tabline to select a
205
- tabpage. The supported items in {args} are:
206
  tabnr: tab page number
207
 
208
  "tabmenu":
209
- Inject an event to select a tabline menu entry. The
210
  supported items in {args} are:
211
  tabnr: tab page number
212
- item: tab page menu item number. 1 for the first
213
  menu item, 2 for the second item and so on.
214
 
215
  After injecting the GUI events you probably should call
@@ -299,7 +299,7 @@ test_mswin_event({event}, {args}) *test_mswin_event()*
299
  8 alt is pressed
300
  Note: These values are different from the
301
  mouse modifiers.
302
- execute: Optional. Similar to |feedkeys()| mode x.
303
  When this is included and set to true
304
  (non-zero) then Vim will process any buffered
305
  unprocessed key events. All other {args}
@@ -307,8 +307,8 @@ test_mswin_event({event}, {args}) *test_mswin_event()*
307
 
308
  "set_keycode_trans_strategy":
309
  |w32-experimental-keycode-trans-strategy|
310
- Switch the keycode translation method. The supported methods
311
- are:
312
  experimental: The method used after Patch v8.2.4807
313
  using ToUnicode() Win API call.
314
  classic: The method used pre Patch v8.2.4807
@@ -323,55 +323,55 @@ test_mswin_event({event}, {args}) *test_mswin_event()*
323
  Return type: |vim9-boolean|
324
 
325
  test_null_blob() *test_null_blob()*
326
- Return a |Blob| that is null. Only useful for testing.
327
 
328
  Return type: |Blob|
329
 
330
  test_null_channel() *test_null_channel()*
331
- Return a |Channel| that is null. Only useful for testing.
332
  {only available when compiled with the +channel feature}
333
 
334
  Return type: |Channel|
335
 
336
  test_null_dict() *test_null_dict()*
337
- Return a |Dict| that is null. Only useful for testing.
338
 
339
  Return type: dict<any>
340
 
341
  test_null_function() *test_null_function()*
342
- Return a |Funcref| that is null. Only useful for testing.
343
 
344
  Return type: func(...): unknown
345
 
346
  test_null_job() *test_null_job()*
347
- Return a |Job| that is null. Only useful for testing.
348
  {only available when compiled with the +job feature}
349
 
350
  Return type: |job|
351
 
352
  test_null_list() *test_null_list()*
353
- Return a |List| that is null. Only useful for testing.
354
 
355
  Return type: list<any>
356
 
357
  test_null_partial() *test_null_partial()*
358
- Return a |Partial| that is null. Only useful for testing.
359
 
360
  Return type: func(...): unknown
361
 
362
  test_null_string() *test_null_string()*
363
- Return a |String| that is null. Only useful for testing.
364
 
365
  Return type: |String|
366
 
367
  test_null_tuple() *test_null_tuple()*
368
- Return a |Tuple| that is null. Only useful for testing.
369
 
370
  Return type: |Tuple|
371
 
372
  test_option_not_set({name}) *test_option_not_set()*
373
  Reset the flag that indicates option {name} was set. Thus it
374
- looks like it still has the default value. Use like this: >
375
  set ambiwidth=double
376
  call test_option_not_set('ambiwidth')
377
  < Now the 'ambiwidth' option behaves like it was never changed,
@@ -384,8 +384,8 @@ test_option_not_set({name}) *test_option_not_set()*
384
  Return type: |Number|
385
 
386
  test_override({name}, {val}) *test_override()*
387
- Overrides certain parts of Vim's internal processing to be able
388
- to run tests. Only to be used for testing Vim!
389
  The override is enabled when {val} is non-zero and removed
390
  when {val} is zero.
391
  Current supported values for {name} are:
@@ -422,7 +422,7 @@ test_override({name}, {val}) *test_override()*
422
 
423
  "starting" is to be used when a test should behave like
424
  startup was done. Since the tests are run by sourcing a
425
- script the "starting" variable is non-zero. This is usually a
426
  good thing (tests run faster), but sometimes this changes
427
  behavior in a way that the test doesn't work properly.
428
  When using: >
@@ -481,12 +481,12 @@ test_srand_seed([{seed}]) *test_srand_seed()*
481
  Return type: |Number|
482
 
483
  test_unknown() *test_unknown()*
484
- Return a value with unknown type. Only useful for testing.
485
 
486
  Return type: unknown
487
 
488
  test_void() *test_void()*
489
- Return a value with void type. Only useful for testing.
490
 
491
  Return type: void
492
 
@@ -565,7 +565,7 @@ assert_fails({cmd} [, {error} [, {msg} [, {lnum} [, {context}]]]])
565
  error message. Also see |assert-return|.
566
  *E856*
567
  When {error} is a string it must be found literally in the
568
- first reported error. Most often this will be the error code,
569
  including the colon, e.g. "E123:". >
570
  call assert_fails('bad cmd', 'E987:')
571
  <
@@ -575,8 +575,8 @@ assert_fails({cmd} [, {error} [, {msg} [, {lnum} [, {context}]]]])
575
  call assert_fails('cmd', ['E987:.*expected bool'])
576
  < The second pattern, if present, is matched against the last
577
  reported error.
578
- If there is only one error then both patterns must match. This
579
- can be used to check that there is only one error.
580
  To only match the last error use an empty string for the first
581
  error: >
582
  call assert_fails('cmd', ['', 'E987:'])
@@ -586,7 +586,7 @@ assert_fails({cmd} [, {error} [, {msg} [, {lnum} [, {context}]]]])
586
  *E1115*
587
  When {lnum} is present and not negative, and the {error}
588
  argument is present and matches, then this is compared with
589
- the line number at which the error was reported. That can be
590
  the line number in a function or in a script.
591
  *E1116*
592
  When {context} is present it is used as a pattern and matched
@@ -609,7 +609,7 @@ assert_false({actual} [, {msg}]) *assert_false()*
609
  location of the assert when run from a script.
610
  Also see |assert-return|.
611
 
612
- A value is false when it is zero. When {actual} is not a
613
  number the assert fails.
614
 
615
  Can also be used as a |method|: >
 
1
+ *testing.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
 
26
 
27
  *new-style-testing*
28
  New tests should be added as new style tests. The test scripts are named
29
+ test_<feature>.vim (replace <feature> with the feature under test). These use
30
  functions such as |assert_equal()| to keep the test commands and the expected
31
  result in one place.
32
  *old-style-testing*
 
58
 
59
  test_feedinput({string}) *test_feedinput()*
60
  Characters in {string} are queued for processing as if they
61
+ were typed by the user. This uses a low level input buffer.
62
  This function works only when with |+unix| or GUI is running.
63
 
64
  Can also be used as a |method|: >
 
96
  *test_gui_event()*
97
  test_gui_event({event}, {args})
98
  Generate a GUI {event} with arguments {args} for testing Vim
99
+ functionality. This function works only when the GUI is
100
  running.
101
 
102
  {event} is a String and the supported values are:
 
116
  files: List of file names
117
  row: window row number
118
  col: window column number
119
+ modifiers: key modifiers. The supported values are:
120
  0x4 Shift
121
  0x8 Alt
122
  0x10 Ctrl
 
131
  in {args} are:
132
  find_text: string to find.
133
  repl_text: replacement string.
134
+ flags: flags controlling the find/replace. Supported
135
  values are:
136
  1 search next string (find dialog)
137
  2 search next string (replace dialog)
 
176
  Set or drag the left, right or horizontal scrollbar. Only
177
  works when the scrollbar actually exists. The supported
178
  items in {args} are:
179
+ which: Selects the scrollbar. The supported values
180
  are:
181
  left Left scrollbar of the current window
182
  right Right scrollbar of the current window
 
202
 
203
  "tabline":
204
  Inject a mouse click event on the tabline to select a
205
+ tabpage. The supported items in {args} are:
206
  tabnr: tab page number
207
 
208
  "tabmenu":
209
+ Inject an event to select a tabline menu entry. The
210
  supported items in {args} are:
211
  tabnr: tab page number
212
+ item: tab page menu item number. 1 for the first
213
  menu item, 2 for the second item and so on.
214
 
215
  After injecting the GUI events you probably should call
 
299
  8 alt is pressed
300
  Note: These values are different from the
301
  mouse modifiers.
302
+ execute: Optional. Similar to |feedkeys()| mode x.
303
  When this is included and set to true
304
  (non-zero) then Vim will process any buffered
305
  unprocessed key events. All other {args}
 
307
 
308
  "set_keycode_trans_strategy":
309
  |w32-experimental-keycode-trans-strategy|
310
+ Switch the keycode translation method. The supported
311
+ methods are:
312
  experimental: The method used after Patch v8.2.4807
313
  using ToUnicode() Win API call.
314
  classic: The method used pre Patch v8.2.4807
 
323
  Return type: |vim9-boolean|
324
 
325
  test_null_blob() *test_null_blob()*
326
+ Return a |Blob| that is null. Only useful for testing.
327
 
328
  Return type: |Blob|
329
 
330
  test_null_channel() *test_null_channel()*
331
+ Return a |Channel| that is null. Only useful for testing.
332
  {only available when compiled with the +channel feature}
333
 
334
  Return type: |Channel|
335
 
336
  test_null_dict() *test_null_dict()*
337
+ Return a |Dict| that is null. Only useful for testing.
338
 
339
  Return type: dict<any>
340
 
341
  test_null_function() *test_null_function()*
342
+ Return a |Funcref| that is null. Only useful for testing.
343
 
344
  Return type: func(...): unknown
345
 
346
  test_null_job() *test_null_job()*
347
+ Return a |Job| that is null. Only useful for testing.
348
  {only available when compiled with the +job feature}
349
 
350
  Return type: |job|
351
 
352
  test_null_list() *test_null_list()*
353
+ Return a |List| that is null. Only useful for testing.
354
 
355
  Return type: list<any>
356
 
357
  test_null_partial() *test_null_partial()*
358
+ Return a |Partial| that is null. Only useful for testing.
359
 
360
  Return type: func(...): unknown
361
 
362
  test_null_string() *test_null_string()*
363
+ Return a |String| that is null. Only useful for testing.
364
 
365
  Return type: |String|
366
 
367
  test_null_tuple() *test_null_tuple()*
368
+ Return a |Tuple| that is null. Only useful for testing.
369
 
370
  Return type: |Tuple|
371
 
372
  test_option_not_set({name}) *test_option_not_set()*
373
  Reset the flag that indicates option {name} was set. Thus it
374
+ looks like it still has the default value. Use like this: >
375
  set ambiwidth=double
376
  call test_option_not_set('ambiwidth')
377
  < Now the 'ambiwidth' option behaves like it was never changed,
 
384
  Return type: |Number|
385
 
386
  test_override({name}, {val}) *test_override()*
387
+ Overrides certain parts of Vim's internal processing to be
388
+ able to run tests. Only to be used for testing Vim!
389
  The override is enabled when {val} is non-zero and removed
390
  when {val} is zero.
391
  Current supported values for {name} are:
 
422
 
423
  "starting" is to be used when a test should behave like
424
  startup was done. Since the tests are run by sourcing a
425
+ script the "starting" variable is non-zero. This is usually a
426
  good thing (tests run faster), but sometimes this changes
427
  behavior in a way that the test doesn't work properly.
428
  When using: >
 
481
  Return type: |Number|
482
 
483
  test_unknown() *test_unknown()*
484
+ Return a value with unknown type. Only useful for testing.
485
 
486
  Return type: unknown
487
 
488
  test_void() *test_void()*
489
+ Return a value with void type. Only useful for testing.
490
 
491
  Return type: void
492
 
 
565
  error message. Also see |assert-return|.
566
  *E856*
567
  When {error} is a string it must be found literally in the
568
+ first reported error. Most often this will be the error code,
569
  including the colon, e.g. "E123:". >
570
  call assert_fails('bad cmd', 'E987:')
571
  <
 
575
  call assert_fails('cmd', ['E987:.*expected bool'])
576
  < The second pattern, if present, is matched against the last
577
  reported error.
578
+ If there is only one error then both patterns must match.
579
+ This can be used to check that there is only one error.
580
  To only match the last error use an empty string for the first
581
  error: >
582
  call assert_fails('cmd', ['', 'E987:'])
 
586
  *E1115*
587
  When {lnum} is present and not negative, and the {error}
588
  argument is present and matches, then this is compared with
589
+ the line number at which the error was reported. That can be
590
  the line number in a function or in a script.
591
  *E1116*
592
  When {context} is present it is used as a pattern and matched
 
609
  location of the assert when run from a script.
610
  Also see |assert-return|.
611
 
612
+ A value is false when it is zero. When {actual} is not a
613
  number the assert fails.
614
 
615
  Can also be used as a |method|: >
runtime/doc/textprop.txt CHANGED
@@ -1,4 +1,4 @@
1
- *textprop.txt* For Vim version 9.1. Last change: 2024 Sep 08
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
@@ -194,7 +194,7 @@ prop_add({lnum}, {col}, {props})
194
  the property type does not have "end_incl" set.
195
 
196
  "type" will first be looked up in the buffer the property is
197
- added to. When not found, the global property types are used.
198
  If not found an error is given.
199
  *virtual-text*
200
  When "text" is used and the column is non-zero then this text
@@ -329,14 +329,14 @@ prop_list({lnum} [, {props}]) *prop_list()*
329
  A negative value is used as an offset from the
330
  last buffer line; -1 refers to the last buffer
331
  line.
332
- types List of property type names. Return only text
333
  properties that match one of the type names.
334
- ids List of property identifiers. Return only text
335
- properties with one of these identifiers.
336
 
337
  The properties are ordered by starting column and priority.
338
  Each property is a Dict with these entries:
339
- lnum starting line number. Present only when
340
  returning text properties between {lnum} and
341
  {end_lnum}.
342
  col starting column
 
1
+ *textprop.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
 
194
  the property type does not have "end_incl" set.
195
 
196
  "type" will first be looked up in the buffer the property is
197
+ added to. When not found, the global property types are used.
198
  If not found an error is given.
199
  *virtual-text*
200
  When "text" is used and the column is non-zero then this text
 
329
  A negative value is used as an offset from the
330
  last buffer line; -1 refers to the last buffer
331
  line.
332
+ types List of property type names. Return only text
333
  properties that match one of the type names.
334
+ ids List of property identifiers. Return only
335
+ text properties with one of these identifiers.
336
 
337
  The properties are ordered by starting column and priority.
338
  Each property is a Dict with these entries:
339
+ lnum starting line number. Present only when
340
  returning text properties between {lnum} and
341
  {end_lnum}.
342
  col starting column
runtime/doc/tips.txt CHANGED
@@ -1,4 +1,4 @@
1
- *tips.txt* For Vim version 9.1. Last change: 2023 Aug 10
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
@@ -183,10 +183,10 @@ To make this easier, you could use these mappings: >
183
  You then lose the ability to copy text from the line above/below the cursor
184
  |i_CTRL-E|.
185
 
186
- Also consider setting 'scrolloff' to a larger value, so that you can always see
187
- some context around the cursor. If 'scrolloff' is bigger than half the window
188
- height, the cursor will always be in the middle and the text is scrolled when
189
- the cursor is moved up/down.
190
 
191
  ==============================================================================
192
  Smooth scrolling *scroll-smooth*
 
1
+ *tips.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
 
183
  You then lose the ability to copy text from the line above/below the cursor
184
  |i_CTRL-E|.
185
 
186
+ Also consider setting 'scrolloff' to a larger value, so that you can always
187
+ see some context around the cursor. If 'scrolloff' is bigger than half the
188
+ window height, the cursor will always be in the middle and the text is
189
+ scrolled when the cursor is moved up/down.
190
 
191
  ==============================================================================
192
  Smooth scrolling *scroll-smooth*
runtime/doc/undo.txt CHANGED
@@ -1,4 +1,4 @@
1
- *undo.txt* For Vim version 9.1. Last change: 2025 Oct 11
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
@@ -112,7 +112,7 @@ parts. E.g., for each sentence. |i_CTRL-G_u|
112
 
113
  Setting the value of 'undolevels' also closes the undo block. Even when the
114
  new value is equal to the old value. Use `g:undolevels` to explicitly read
115
- and write only the global value of 'undolevels'. In |Vim9| script: >
116
  &g:undolevels = &g:undolevels
117
  In legacy script: >
118
  let &g:undolevels = &g:undolevels
@@ -156,7 +156,7 @@ This is explained in the user manual: |usr_32.txt|.
156
  MM/DD HH:MM:SS idem, with month and day
157
  YYYY/MM/DD HH:MM:SS idem, with year
158
  The "saved" column specifies, if this change was
159
- written to disk and which file write it was. This can
160
  be used with the |:later| and |:earlier| commands.
161
  For more details use the |undotree()| function.
162
 
@@ -256,7 +256,7 @@ for, you can use a BufWritePre autocommand: >
256
  au BufWritePre /tmp/* setlocal noundofile
257
 
258
  Vim saves undo trees in a separate undo file, one for each edited file, using
259
- a simple scheme that maps filesystem paths directly to undo files. Vim will
260
  detect if an undo file is no longer synchronized with the file it was written
261
  for (with a hash of the file contents) and ignore it when the file was changed
262
  after the undo file was written, to prevent corruption. An undo file is also
@@ -285,11 +285,11 @@ respectively:
285
  (the magic number at the start of the file is wrong), then
286
  this fails, unless the ! was added.
287
  If it exists and does look like an undo file it is
288
- overwritten. If there is no undo-history, nothing will be
289
  written.
290
  Implementation detail: Overwriting happens by first deleting
291
  the existing file and then creating a new file with the same
292
- name. So it is not possible to overwrite an existing undofile
293
  in a write-protected directory.
294
 
295
  *:rund* *:rundo*
@@ -385,11 +385,12 @@ information you can use these commands: >
385
 
386
  Note use of `&l:undolevels` to explicitly read the local value of 'undolevels'
387
  and the use of `:setlocal` to change only the local option (which takes
388
- precedence over the corresponding global option value). Saving the option value
389
- via the use of `&undolevels` is unpredictable; it reads either the local value
390
- (if one has been set) or the global value (otherwise). Also, if a local value
391
- has been set, changing the option via `:set undolevels` will change both the
392
- global and local values, requiring extra work to save and restore both values.
 
393
 
394
  Marks for the buffer ('a to 'z) are also saved and restored, together with the
395
  text.
 
1
+ *undo.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
 
112
 
113
  Setting the value of 'undolevels' also closes the undo block. Even when the
114
  new value is equal to the old value. Use `g:undolevels` to explicitly read
115
+ and write only the global value of 'undolevels'. In |Vim9| script: >
116
  &g:undolevels = &g:undolevels
117
  In legacy script: >
118
  let &g:undolevels = &g:undolevels
 
156
  MM/DD HH:MM:SS idem, with month and day
157
  YYYY/MM/DD HH:MM:SS idem, with year
158
  The "saved" column specifies, if this change was
159
+ written to disk and which file write it was. This can
160
  be used with the |:later| and |:earlier| commands.
161
  For more details use the |undotree()| function.
162
 
 
256
  au BufWritePre /tmp/* setlocal noundofile
257
 
258
  Vim saves undo trees in a separate undo file, one for each edited file, using
259
+ a simple scheme that maps filesystem paths directly to undo files. Vim will
260
  detect if an undo file is no longer synchronized with the file it was written
261
  for (with a hash of the file contents) and ignore it when the file was changed
262
  after the undo file was written, to prevent corruption. An undo file is also
 
285
  (the magic number at the start of the file is wrong), then
286
  this fails, unless the ! was added.
287
  If it exists and does look like an undo file it is
288
+ overwritten. If there is no undo-history, nothing will be
289
  written.
290
  Implementation detail: Overwriting happens by first deleting
291
  the existing file and then creating a new file with the same
292
+ name. So it is not possible to overwrite an existing undofile
293
  in a write-protected directory.
294
 
295
  *:rund* *:rundo*
 
385
 
386
  Note use of `&l:undolevels` to explicitly read the local value of 'undolevels'
387
  and the use of `:setlocal` to change only the local option (which takes
388
+ precedence over the corresponding global option value). Saving the option
389
+ value via the use of `&undolevels` is unpredictable; it reads either the local
390
+ value (if one has been set) or the global value (otherwise). Also, if a local
391
+ value has been set, changing the option via `:set undolevels` will change both
392
+ the global and local values, requiring extra work to save and restore both
393
+ values.
394
 
395
  Marks for the buffer ('a to 'z) are also saved and restored, together with the
396
  text.
runtime/doc/userfunc.txt CHANGED
@@ -1,4 +1,4 @@
1
- *userfunc.txt* For Vim version 9.1. Last change: 2025 Sep 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
@@ -65,7 +65,7 @@ define a global function.
65
  <
66
  *:function-verbose*
67
  When 'verbose' is non-zero, listing a function will also display where it was
68
- last defined. Example: >
69
 
70
  :verbose function SetFileTypeSH
71
  function SetFileTypeSH(name)
 
1
+ *userfunc.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
 
65
  <
66
  *:function-verbose*
67
  When 'verbose' is non-zero, listing a function will also display where it was
68
+ last defined. Example: >
69
 
70
  :verbose function SetFileTypeSH
71
  function SetFileTypeSH(name)
runtime/doc/various.txt CHANGED
@@ -1,4 +1,4 @@
1
- *various.txt* For Vim version 9.1. Last change: 2025 Sep 22
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
@@ -586,13 +586,13 @@ N *+X11* Unix only: can restore window title |X11|
586
  :redi[r] @{a-z}>> Append messages to register {a-z}.
587
 
588
  :redi[r] @*>
589
- :redi[r] @+> Redirect messages to the selection or clipboard. For
590
  backward compatibility, the ">" after the register
591
- name can be omitted. See |quotestar| and |quoteplus|.
592
  :redi[r] @*>>
593
  :redi[r] @+>> Append messages to the selection or clipboard.
594
 
595
- :redi[r] @"> Redirect messages to the unnamed register. For
596
  backward compatibility, the ">" after the register
597
  name can be omitted.
598
  :redi[r] @">> Append messages to the unnamed register.
@@ -628,16 +628,17 @@ N *+X11* Unix only: can restore window title |X11|
628
  < If the [!] is given, restrict the output of {command}
629
  to lines that do NOT match {pattern}.
630
 
631
- {pattern} is a Vim search pattern. Instead of enclosing
632
- it in / any non-ID character (see 'isident') can be
633
- used, so long as it does not appear in {pattern}.
 
634
  Without the enclosing character the pattern cannot
635
- include the bar character. 'ignorecase' is not used.
636
 
637
  The pattern is matched against the relevant part of
638
- the output, not necessarily the whole line. Only some
639
  commands support filtering, try it out to check if it
640
- works. Some of the commands that support filtering:
641
  |:#| - filter whole line
642
  |:clist| - filter by file name or module name
643
  |:command| - filter by command name
@@ -706,7 +707,7 @@ N *+X11* Unix only: can restore window title |X11|
706
  *:verb* *:verbose*
707
  :[count]verb[ose] {command}
708
  Execute {command} with 'verbose' set to [count]. If
709
- [count] is omitted one is used. ":0verbose" can be
710
  used to set 'verbose' to zero.
711
  The additional use of ":silent" makes messages
712
  generated but not displayed.
@@ -787,10 +788,10 @@ K Run a program to lookup the keyword under the
787
  :[N]sl[eep]! [N][m] Same as above, but hide the cursor.
788
 
789
  *:xrestore* *:xr*
790
- :xr[estore] [display] Reinitializes the connection to the X11 server. Useful
791
- after the X server restarts, e.g. when running Vim for
792
- long time inside screen/tmux and connecting from
793
- different machines.
794
  [display] should be in the format of the $DISPLAY
795
  environment variable (e.g. "localhost:10.0")
796
  If [display] is omitted, then it reinitializes the
 
1
+ *various.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
 
586
  :redi[r] @{a-z}>> Append messages to register {a-z}.
587
 
588
  :redi[r] @*>
589
+ :redi[r] @+> Redirect messages to the selection or clipboard. For
590
  backward compatibility, the ">" after the register
591
+ name can be omitted. See |quotestar| and |quoteplus|.
592
  :redi[r] @*>>
593
  :redi[r] @+>> Append messages to the selection or clipboard.
594
 
595
+ :redi[r] @"> Redirect messages to the unnamed register. For
596
  backward compatibility, the ">" after the register
597
  name can be omitted.
598
  :redi[r] @">> Append messages to the unnamed register.
 
628
  < If the [!] is given, restrict the output of {command}
629
  to lines that do NOT match {pattern}.
630
 
631
+ {pattern} is a Vim search pattern. Instead of
632
+ enclosing it in / any non-ID character (see 'isident')
633
+ can be used, so long as it does not appear in
634
+ {pattern}.
635
  Without the enclosing character the pattern cannot
636
+ include the bar character. 'ignorecase' is not used.
637
 
638
  The pattern is matched against the relevant part of
639
+ the output, not necessarily the whole line. Only some
640
  commands support filtering, try it out to check if it
641
+ works. Some of the commands that support filtering:
642
  |:#| - filter whole line
643
  |:clist| - filter by file name or module name
644
  |:command| - filter by command name
 
707
  *:verb* *:verbose*
708
  :[count]verb[ose] {command}
709
  Execute {command} with 'verbose' set to [count]. If
710
+ [count] is omitted one is used. ":0verbose" can be
711
  used to set 'verbose' to zero.
712
  The additional use of ":silent" makes messages
713
  generated but not displayed.
 
788
  :[N]sl[eep]! [N][m] Same as above, but hide the cursor.
789
 
790
  *:xrestore* *:xr*
791
+ :xr[estore] [display] Reinitializes the connection to the X11 server.
792
+ Useful after the X server restarts, e.g. when running
793
+ Vim for long time inside screen/tmux and connecting
794
+ from different machines.
795
  [display] should be in the format of the $DISPLAY
796
  environment variable (e.g. "localhost:10.0")
797
  If [display] is omitted, then it reinitializes the
runtime/doc/vi_diff.txt CHANGED
@@ -1,4 +1,4 @@
1
- *vi_diff.txt* For Vim version 9.1. Last change: 2025 Sep 29
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
@@ -174,7 +174,8 @@ Multiple windows and buffers. |windows.txt|
174
  is called a hidden buffer. Many commands and options have been added
175
  for this facility.
176
  Vim can also use multiple tab pages, each with one or more windows. A
177
- line with tab labels can be used to quickly switch between these pages.
 
178
  |tab-page|
179
 
180
  Terminal window. |:terminal|
@@ -1373,7 +1374,7 @@ Vim tries to support some old operating systems, however support for older
1373
  operating systems might be dropped if maintenance becomes a burden or can no
1374
  longer be verified.
1375
 
1376
- Here is the status of some operating systems. Note fully supported means,
1377
  support is verified as part of the CI test suite.
1378
 
1379
  System | Status:~
 
1
+ *vi_diff.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
 
174
  is called a hidden buffer. Many commands and options have been added
175
  for this facility.
176
  Vim can also use multiple tab pages, each with one or more windows. A
177
+ line with tab labels can be used to quickly switch between these
178
+ pages.
179
  |tab-page|
180
 
181
  Terminal window. |:terminal|
 
1374
  operating systems might be dropped if maintenance becomes a burden or can no
1375
  longer be verified.
1376
 
1377
+ Here is the status of some operating systems. Note fully supported means,
1378
  support is verified as part of the CI test suite.
1379
 
1380
  System | Status:~
runtime/doc/visual.txt CHANGED
@@ -1,4 +1,4 @@
1
- *visual.txt* For Vim version 9.1. Last change: 2025 Jun 28
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
@@ -128,8 +128,8 @@ gN Like |gn| but searches backward, like with `N`.
128
  active it is stopped. Only when 'mouse' option
129
  contains 'n' or 'a'. If the position is within 'so'
130
  lines from the last line on the screen the text is
131
- scrolled up. If the position is within 'so' lines from
132
- the first line on the screen the text is scrolled
133
  down.
134
 
135
  *<RightMouse>*
@@ -352,10 +352,10 @@ all lines.
352
 
353
  *v_b_<*
354
  Visual-block Shift *v_b_>*
355
- The block is shifted by 'shiftwidth'. The RHS of the block is irrelevant. The
356
- LHS of the block determines the point from which to apply a right shift, and
357
- padding includes TABs optimally according to 'ts' and 'et'. The LHS of the
358
- block determines the point up to which to shift left.
359
  See |v_b_>_example|.
360
  See |v_b_<_example|.
361
 
 
1
+ *visual.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
 
128
  active it is stopped. Only when 'mouse' option
129
  contains 'n' or 'a'. If the position is within 'so'
130
  lines from the last line on the screen the text is
131
+ scrolled up. If the position is within 'so' lines
132
+ from the first line on the screen the text is scrolled
133
  down.
134
 
135
  *<RightMouse>*
 
352
 
353
  *v_b_<*
354
  Visual-block Shift *v_b_>*
355
+ The block is shifted by 'shiftwidth'. The RHS of the block is irrelevant.
356
+ The LHS of the block determines the point from which to apply a right shift,
357
+ and padding includes TABs optimally according to 'ts' and 'et'. The LHS of
358
+ the block determines the point up to which to shift left.
359
  See |v_b_>_example|.
360
  See |v_b_<_example|.
361
 
runtime/doc/wayland.txt CHANGED
@@ -1,4 +1,4 @@
1
- *wayland.txt* For Vim version 9.1. Last change: 2025 Sep 22
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
@@ -26,7 +26,8 @@ should equal to "gui" when running the GUI.
26
 
27
  Wayland commands:
28
  *:wlrestore* *:wl*
29
- :wl[restore] [display] Reinitializes the connection to the Wayland compositor.
 
30
  Useful when running Vim in a screen/tmux session that
31
  continues running after the Wayland compositor
32
  restarts.
@@ -105,7 +106,7 @@ To solve this problem, Vim implements a way of gaining focus in order to
105
  access the clipboard, by creating a temporary transparent top-level surface.
106
  This is by default disabled and can be enabled via the 'wlsteal' option.
107
  Moreover, a seat that has a keyboard is also required, see 'wlseat', and the
108
- xdg-shell protocol must be available. Additionally, Vim must be compiled with
109
  the |+wayland_focus_steal| feature.
110
 
111
  Note that this method can have several side effects from the result of focus
 
1
+ *wayland.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
 
26
 
27
  Wayland commands:
28
  *:wlrestore* *:wl*
29
+ :wl[restore] [display] Reinitializes the connection to the Wayland
30
+ compositor.
31
  Useful when running Vim in a screen/tmux session that
32
  continues running after the Wayland compositor
33
  restarts.
 
106
  access the clipboard, by creating a temporary transparent top-level surface.
107
  This is by default disabled and can be enabled via the 'wlsteal' option.
108
  Moreover, a seat that has a keyboard is also required, see 'wlseat', and the
109
+ xdg-shell protocol must be available. Additionally, Vim must be compiled with
110
  the |+wayland_focus_steal| feature.
111
 
112
  Note that this method can have several side effects from the result of focus
runtime/doc/windows.txt CHANGED
@@ -1,4 +1,4 @@
1
- *windows.txt* For Vim version 9.1. Last change: 2025 Oct 11
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
@@ -72,7 +72,7 @@ Each buffer has a unique number and the number will not change within a Vim
72
  session. The |bufnr()| and |bufname()| functions can be used to convert
73
  between a buffer name and the buffer number. There is one exception: if a new
74
  empty buffer is created and it is not modified, the buffer will be re-used
75
- when loading another file into that buffer. This also means the buffer number
76
  will not change.
77
 
78
  The main Vim window can hold several split windows. There are also tab pages
@@ -80,7 +80,7 @@ The main Vim window can hold several split windows. There are also tab pages
80
 
81
  *window-ID* *winid* *windowid*
82
  Each window has a unique identifier called the window ID. This identifier
83
- will not change within a Vim session. The |win_getid()| and |win_id2tabwin()|
84
  functions can be used to convert between the window/tab number and the
85
  identifier. There is also the window number, which may change whenever
86
  windows are opened or closed, see |winnr()|.
@@ -142,9 +142,9 @@ that have termcap codes for italics.
142
 
143
  *filler-lines*
144
  The lines after the last buffer line in a window are called filler lines. By
145
- default, these lines start with a tilde (~) character. The 'eob' item in the
146
- 'fillchars' option can be used to change this character. By default, these
147
- characters are highlighted as NonText (|hl-NonText|). The EndOfBuffer
148
  highlight group (|hl-EndOfBuffer|) can be used to change the highlighting of
149
  the filler characters.
150
 
@@ -912,7 +912,7 @@ CTRL-W CTRL-F Split current window in two. Edit file name under cursor.
912
 
913
  CTRL-W F *CTRL-W_F*
914
  Split current window in two. Edit file name under cursor and
915
- jump to the line number following the file name. See |gF| for
916
  details on how the line number is obtained.
917
 
918
  CTRL-W gf *CTRL-W_gf*
@@ -1217,7 +1217,7 @@ list of buffers. |unlisted-buffer|
1217
  Actually, the buffer isn't completely deleted, it is removed
1218
  from the buffer list |unlisted-buffer| and option values,
1219
  variables and mappings/abbreviations for the buffer are
1220
- cleared. Examples: >
1221
  :.,$-bdelete " delete buffers from the current one to
1222
  " last but one
1223
  :%bdelete " delete all buffers
@@ -1245,7 +1245,7 @@ list of buffers. |unlisted-buffer|
1245
  related to the buffer is lost. All marks in this buffer
1246
  become invalid, option settings are lost, the jumplist and
1247
  tagstack data will be purged, etc. Don't use this
1248
- unless you know what you are doing. Examples: >
1249
  :.+,$bwipeout " wipe out all buffers after the current
1250
  " one
1251
  :%bwipeout " wipe out all buffers
@@ -1430,7 +1430,7 @@ help Contains a help file. Will only be created with the |:help|
1430
  and can't be changed. The 'buflisted' option will be reset
1431
  for a help buffer.
1432
 
1433
- terminal A terminal window buffer, see |terminal|. The contents cannot
1434
  be read or changed until the job ends.
1435
 
1436
  directory Displays directory contents. Can be used by a file explorer
 
1
+ *windows.txt* For Vim version 9.1. Last change: 2025 Oct 12
2
 
3
 
4
  VIM REFERENCE MANUAL by Bram Moolenaar
 
72
  session. The |bufnr()| and |bufname()| functions can be used to convert
73
  between a buffer name and the buffer number. There is one exception: if a new
74
  empty buffer is created and it is not modified, the buffer will be re-used
75
+ when loading another file into that buffer. This also means the buffer number
76
  will not change.
77
 
78
  The main Vim window can hold several split windows. There are also tab pages
 
80
 
81
  *window-ID* *winid* *windowid*
82
  Each window has a unique identifier called the window ID. This identifier
83
+ will not change within a Vim session. The |win_getid()| and |win_id2tabwin()|
84
  functions can be used to convert between the window/tab number and the
85
  identifier. There is also the window number, which may change whenever
86
  windows are opened or closed, see |winnr()|.
 
142
 
143
  *filler-lines*
144
  The lines after the last buffer line in a window are called filler lines. By
145
+ default, these lines start with a tilde (~) character. The 'eob' item in the
146
+ 'fillchars' option can be used to change this character. By default, these
147
+ characters are highlighted as NonText (|hl-NonText|). The EndOfBuffer
148
  highlight group (|hl-EndOfBuffer|) can be used to change the highlighting of
149
  the filler characters.
150
 
 
912
 
913
  CTRL-W F *CTRL-W_F*
914
  Split current window in two. Edit file name under cursor and
915
+ jump to the line number following the file name. See |gF| for
916
  details on how the line number is obtained.
917
 
918
  CTRL-W gf *CTRL-W_gf*
 
1217
  Actually, the buffer isn't completely deleted, it is removed
1218
  from the buffer list |unlisted-buffer| and option values,
1219
  variables and mappings/abbreviations for the buffer are
1220
+ cleared. Examples: >
1221
  :.,$-bdelete " delete buffers from the current one to
1222
  " last but one
1223
  :%bdelete " delete all buffers
 
1245
  related to the buffer is lost. All marks in this buffer
1246
  become invalid, option settings are lost, the jumplist and
1247
  tagstack data will be purged, etc. Don't use this
1248
+ unless you know what you are doing. Examples: >
1249
  :.+,$bwipeout " wipe out all buffers after the current
1250
  " one
1251
  :%bwipeout " wipe out all buffers
 
1430
  and can't be changed. The 'buflisted' option will be reset
1431
  for a help buffer.
1432
 
1433
+ terminal A terminal window buffer, see |terminal|. The contents cannot
1434
  be read or changed until the job ends.
1435
 
1436
  directory Displays directory contents. Can be used by a file explorer